I have an LC handler that uses sha1 to create an n-character alphanumeric 
string based on a hash of an input string and an optional individual password. 
I'm not a crypto expert, so I don't know how secure the result is but it may be 
useful to somebody. The handler is below, but I have omitted the guts of it 
since I don't want the full code archived on the web for access to the 
hackerverse. Anyone who wants the full script can email me offlist. The basic 
script could be modified to create your own variant. Basically the idea is to 
translate the sha1 string into low-ascii characters. Which per the ongoing 
discussion doesn't lose much in the way of security.

function getHashCode2 tString, tLength, tPassword
   -- returns a tLength-character alphanumeric string (up to 20 chars, default 
= 12)
   --   that is a hash of the input string,
   -- uses SHA-1 for high-end (though not perfect) cryptographic security
   -- allows adding a password as input so that the hash can be duplicated only
   --   with the correct password
   -- if tPassword is empty, the hash is stable and is dependent
   --   only on the content of tString
   
   if tLength = empty then put 12 into tLength
   try
      put sha1digest(tString & tPassword) into tDigest
   catch tErr
      put md5digest(tString & tPassword) into tDigest
      -- if version < 4.5.3
   end try
   put "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" \
                into codeChars
   put length(codeChars) into howManyCodeChars
   repeat with i = 1 to the number of chars of tDigest
      ... <snip> ...
   end repeat
   repeat with j = 1 to tLength
      ... <snip> ...
   end repeat
   return finalCodeString
end getHashCode2

-- Peter

Peter M. Brigham
pmb...@gmail.com
http://home.comcast.net/~pmbrig

On Jun 13, 2012, at 9:47 AM, Richard Gaskin wrote:

> Some apartment buildings use locks which support a master key held by the 
> landlord, so that the tenant keys will only unlock their own door but the 
> master key will trip enough tumblers to unlock any door in the building.
> 
> In your case, having a single hard-wired master key as an "OR" in your script 
> might be too dangerous; anyone you send the master key to would then be able 
> to unlock any such stack, no only their own.
> 
> But perhaps the key you send them would be a hash of some fixed salt string, 
> the user name, and the date - it would then only work when applied to the 
> user's stack (assuming their user name is stored somewhere in it), and only 
> on the date you send it.
> 
> 
> General tip for anyone using hashes:
> 
> MD5 has been known to be theoretically crackable for some years, and this has 
> become a reality as noted in recent news:
> 
>   MD5 password scrambler 'no longer safe'
> 
>   Summary: The MD5 password hash algorithm is “no longer considered
>   safe” by the original software developer, a day after the leak of
>   more than 6.4 million hashed LinkedIn passwords.
> 
> <http://www.zdnet.com/blog/security/md5-password-scrambler-no-longer-safe/12317>
> 
> Fortunately RunRev is on top of things, and several versions back added an 
> alternative hash function, "sha1Digest", which is generally considered to be 
> a more secure option.
> 
> So if any of your code is still using the older "md5Digest" function, it may 
> be a good time to migrate to "sha1Digest".
> 
> --
> Richard Gaskin
> Fourth World
> LiveCode training and consulting: http://www.fourthworld.com
> Webzine for LiveCode developers: http://www.LiveCodeJournal.com
> Follow me on Twitter:  http://twitter.com/FourthWorldSys
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to