Great work. I love libraries like these. I am a bit confused though, in your #updateString: you seem to be implementing UTF-8 encoding, something we already have. Normally, hashing algorithms are defined on bytes and result in bytes (yours returns a plain Array, which is also strange).
It seems (Keccak hashMessage: 'foo bar') = (Keccak hashMessage: 'foo bar' asByteArray). is true, but (Keccak hashMessage: 'Les élèves Françaises') = (Keccak hashMessage: 'Les élèves Françaises' utf8Encoded). is false. How come ? Is this UTF-8 encoding really part of the algorithm ? Do your tests cover it ? Another question, how would you compute the invariants given here ? https://en.wikipedia.org/wiki/SHA-3#Examples_of_SHA-3_variants SHAKE128("The quick brown fox jumps over the lazy dog", 256) f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e SHAKE128("The quick brown fox jumps over the lazy dof", 256) 853f4538be0db9621a6cea659a06c1107b1f83f02b13d18297bd39d7411cf10c > On 18 Jul 2017, at 18:32, Santiago Bragagnolo <santiagobragagn...@gmail.com> > wrote: > > Hi there! > > I am just releasing the first version of the Keccak-256 hashing algorithm. > https://en.wikipedia.org/wiki/SHA-3 > > You can find it at: https://github.com/sbragagnolo/Keccak > > This version is based on a javascript implementation: > https://github.com/emn178/js-sha3 > > This implementation supports as message: bytearray and ascii and utf-8 > strings. > > > Soon i will be adding support to the rest of the Keccak family of hashing > functions, since the implementations is quite configurable, is just need to > add some constructors with specific configurations and tests for this other > cases of usage. > > > Here a onliner for building an image with the version v0.1: > > wget -O- https://raw.githubusercontent.com/sbragagnolo/Keccak/v0.1/build.sh > | bash > > Hope you find it useful :) > > > Santiago > >