"Mariano Martinez Peck"<[email protected]> wrote:
> I had the same problem. I added the following to my compatibility package.
> In Pharo now I do:
>
> shaHashMessage: aString
> "this method hashes aString using a SHA1 (SecureHashAlgorithm) method.
> Returns an integer"
> ^ (SHA1 new hashStream: aString readStream) asInteger

This is very ambiguous API. SHA1 (and in fact all secure hash functions) are 
defined in terms of bytes, (bytes in, bytes out). This method doesn't specify 
the transformation that turns the aString into bytes (presumably some kind of 
encoding, but what is it?) and what transformation it does to turn the 20 bytes 
of SHA1 result into an Integer (does it interpret the bytes as big 
endian/little endian, or maybe it throws every second byte away in the 
process). It's OK to wrap the basic hashing API in helpers that accept other 
types of arguments for common use cases, but the basic API definitely should be 
bytes in/bytes out.

HTH,

Martin


Reply via email to