[Ann] Keccak hashing algorithm
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
Great! I see you continue doing Ethereum related stuff ;-) Regards! Esteban A. Maringolo 2017-07-18 13:32 GMT-03:00 Santiago Bragagnolo <santiagobragagnolo@gmail.com>:
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
Really great! I think we should move the Cryptography package from smalltalkhub to github, refactor it and add goodies like this. We need a strong crypto foundation. Norbert
Am 18.07.2017 um 19:10 schrieb Esteban A. Maringolo <emaringolo@gmail.com>:
Great!
I see you continue doing Ethereum related stuff ;-)
Regards! Esteban A. Maringolo
2017-07-18 13:32 GMT-03:00 Santiago Bragagnolo <santiagobragagnolo@gmail.com>:
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
Norbert, On Tue, Jul 18, 2017 at 11:05 AM, Norbert Hartl <norbert@hartl.name> wrote:
Really great! I think we should move the Cryptography package from smalltalkhub to github, refactor it and add goodies like this. We need a strong crypto foundation.
I agree that refactoring and adding goodies is great. But why does that imply moving to github? The Cryptography package has Squeak contributors too and moving to github implies a fork.
Norbert
Am 18.07.2017 um 19:10 schrieb Esteban A. Maringolo < emaringolo@gmail.com>:
Great!
I see you continue doing Ethereum related stuff ;-)
Regards! Esteban A. Maringolo
2017-07-18 13:32 GMT-03:00 Santiago Bragagnolo < santiagobragagnolo@gmail.com>:
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
-- _,,,^..^,,,_ best, Eliot
2017-07-18 17:26 GMT-03:00 Eliot Miranda <eliot.miranda@gmail.com>:
Norbert,
On Tue, Jul 18, 2017 at 11:05 AM, Norbert Hartl <norbert@hartl.name> wrote:
Really great! I think we should move the Cryptography package from smalltalkhub to github, refactor it and add goodies like this. We need a strong crypto foundation.
I agree that refactoring and adding goodies is great. But why does that imply moving to github? The Cryptography package has Squeak contributors too and moving to github implies a fork.
The fork, soft or hard, already happened since Pharo incorporated in "core" packages methods that belonged to the Cryptography package, so loading this one overrides core methods. Last commit to Squeaksource repo is 4 years old. As per my last year announcement in http://forum.world.st/Cryptography-packages-tp4915041p4915764.html "I just adapted the latest version of the Cryptography package in SqueakSource (Cryptography-rww.49) and removed everything that was already in the Pharo 5.0 image and modified what was necessary to have all the tests passing. There is still a pending organization of the Cryptography classes and packages per se, but this should be the reference implementation in Pharo. http://smalltalkhub.com/#!/~Cryptography/Cryptography/" Regards, Esteban A. Maringolo
2017-07-18 17:33 GMT-03:00 Esteban A. Maringolo <emaringolo@gmail.com>:
2017-07-18 17:26 GMT-03:00 Eliot Miranda <eliot.miranda@gmail.com>:
imply moving to github? The Cryptography package has Squeak contributors too and moving to github implies a fork.
Last commit to Squeaksource repo is 4 years old.
I overlooked this, last commit is recent. My bad.
Eliot,
Am 18.07.2017 um 22:26 schrieb Eliot Miranda <eliot.miranda@gmail.com>:
Norbert,
On Tue, Jul 18, 2017 at 11:05 AM, Norbert Hartl <norbert@hartl.name <mailto:norbert@hartl.name>> wrote: Really great! I think we should move the Cryptography package from smalltalkhub to github, refactor it and add goodies like this. We need a strong crypto foundation.
I agree that refactoring and adding goodies is great. But why does that imply moving to github? The Cryptography package has Squeak contributors too and moving to github implies a fork.
That fork happened already because there is a repository on smalltalkhub [1]. Lately I needed crypto support for a project of mine and I was searching for the last thing I could use. I was glad I've found the package Esteban did so I could use it in pharo. But I didn't know it was only the very last version that worked on pharo. But my Metacello setup somehow decided to load the second recent package which rendered my image unusable. From then I know that there are a lot of classes that have been incorporated in pharo which are present in the Cryptography package. I was asking for someone that maintains it and got no response. It is clear to me that there is no easy way to maintain the package for both squeak and pharo. At least not while having one big package to share. It would need a bit of engineering. Then I remembered I was asking a similar question (about splitting the Cryptography package) years ago and I didn't get much positive resonance. Btw. this was my general feeling with the squeak community back then and the same reason I was one of the first being on the pharo train (sapphire back then). To make a long story short. I really like spending some time for the smalltalk community. And I'm afraid I could kill my time and my mood while trying to get an agreement for something both squeak and pharo. So my current strategy is to care less and look (selfishly) forward. Maybe the better way is that each side has a look at the repository of the others and merges what is needed. Why github? Because I want a reliable repository where my business process runs on. Smalltalkhub is close to its final growth. And my impression is that if we would put the load from smalltalkhub onto squeaksource the only thing we would notice is a bright flash and silence after. Furthermore after all those years it turns out that you have a hard time of you do version your stuff and you want versioning to work reliable. What really works for me is having a github repo, a BaselineOf my project and tags on commits. Anything else just does not work and/or is not reproducible. Norbert [1] http://smalltalkhub.com/#!/~Cryptography/Cryptography <http://smalltalkhub.com/#!/~Cryptography/Cryptography>
Norbert
Am 18.07.2017 um 19:10 schrieb Esteban A. Maringolo <emaringolo@gmail.com <mailto:emaringolo@gmail.com>>:
Great!
I see you continue doing Ethereum related stuff ;-)
Regards! Esteban A. Maringolo
2017-07-18 13:32 GMT-03:00 Santiago Bragagnolo <santiagobragagnolo@gmail.com <mailto:santiagobragagnolo@gmail.com>>:
Hi there!
I am just releasing the first version of the Keccak-256 hashing algorithm. https://en.wikipedia.org/wiki/SHA-3 <https://en.wikipedia.org/wiki/SHA-3>
You can find it at: https://github.com/sbragagnolo/Keccak <https://github.com/sbragagnolo/Keccak>
This version is based on a javascript implementation: https://github.com/emn178/js-sha3 <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 <https://raw.githubusercontent.com/sbragagnolo/Keccak/v0.1/build.sh> | bash
Hope you find it useful :)
Santiago
-- _,,,^..^,,,_ best, Eliot
Thanks Norbert. The consortium paid nicolas to deliver iceberg and esteban to push further for git because the world is moving and git and github support will give us a lot of exposure and a really powerful distributing versionning source control system (even if I really enjoyed MC - it is showing its age - I will be also happy when Smalltalkhub will be a nice legacy not getting in my way. For the record people close to me know that I do not like git even if I like its underlying social model - fork and we pushed git not by accident. But to sustain business and our community. I often have the impression that we are ants fighting together while elephants (python, ruby, JS) are running around. I spent a lot of time pushing Squeak in the past - I'm basically the guy that wrote most books and produced a lot of teaching material on Squeak, but I arrived to a point where I decided that there were no reasonance about the vision (innovation and business) I wanted for a new generation smalltalk so I decided that Squeak was ok for me and that all my energy is for Pharo. I do not like to compete to runner competition with snowshoes while others have supercool nike and this "let us do something compatible" like forcing me to wear snow shoes. I paid attention to avoid non backward compatible changes but after a while what should be done should be done. I think that since 2008 we show that we value: community building, business support and delivering an excellent system. So I'm like you, if everything I do should be compatible with Squeak and others then I should better go and do fun stuff in Lua, Python, Ruby or JS. People may think that it is sad or that I'm arrogant asshole: I do not care because this is my fun and my life. Pharo is open and people are welcome to build it with us. We are always really open to co-build it but it also means taking responsibility. So thanks for sharing the vision with us. Stef On Wed, Jul 19, 2017 at 1:39 PM, Norbert Hartl <norbert@hartl.name> wrote:
Eliot,
Am 18.07.2017 um 22:26 schrieb Eliot Miranda <eliot.miranda@gmail.com>:
Norbert,
On Tue, Jul 18, 2017 at 11:05 AM, Norbert Hartl <norbert@hartl.name> wrote:
Really great! I think we should move the Cryptography package from smalltalkhub to github, refactor it and add goodies like this. We need a strong crypto foundation.
I agree that refactoring and adding goodies is great. But why does that imply moving to github? The Cryptography package has Squeak contributors too and moving to github implies a fork.
That fork happened already because there is a repository on smalltalkhub [1]. Lately I needed crypto support for a project of mine and I was searching for the last thing I could use. I was glad I've found the package Esteban did so I could use it in pharo. But I didn't know it was only the very last version that worked on pharo. But my Metacello setup somehow decided to load the second recent package which rendered my image unusable. From then I know that there are a lot of classes that have been incorporated in pharo which are present in the Cryptography package. I was asking for someone that maintains it and got no response. It is clear to me that there is no easy way to maintain the package for both squeak and pharo. At least not while having one big package to share. It would need a bit of engineering. Then I remembered I was asking a similar question (about splitting the Cryptography package) years ago and I didn't get much positive resonance. Btw. this was my general feeling with the squeak community back then and the same reason I was one of the first being on the pharo train (sapphire back then). To make a long story short. I really like spending some time for the smalltalk community. And I'm afraid I could kill my time and my mood while trying to get an agreement for something both squeak and pharo. So my current strategy is to care less and look (selfishly) forward. Maybe the better way is that each side has a look at the repository of the others and merges what is needed. Why github? Because I want a reliable repository where my business process runs on. Smalltalkhub is close to its final growth. And my impression is that if we would put the load from smalltalkhub onto squeaksource the only thing we would notice is a bright flash and silence after. Furthermore after all those years it turns out that you have a hard time of you do version your stuff and you want versioning to work reliable. What really works for me is having a github repo, a BaselineOf my project and tags on commits. Anything else just does not work and/or is not reproducible.
Norbert
[1] http://smalltalkhub.com/#!/~Cryptography/Cryptography
Norbert
Am 18.07.2017 um 19:10 schrieb Esteban A. Maringolo <emaringolo@gmail.com>:
Great!
I see you continue doing Ethereum related stuff ;-)
Regards! Esteban A. Maringolo
2017-07-18 13:32 GMT-03:00 Santiago Bragagnolo <santiagobragagnolo@gmail.com>:
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
-- _,,,^..^,,,_ best, Eliot
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 <santiagobragagnolo@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
Hahahaha, Thanks for the feedback. Sven, I am quite new in this domain. I'll study your questions and come with solutions tomorrow :). Thanks, i really need this interaction. On Tue, 18 Jul 2017 at 20:28 Sven Van Caekenberghe <sven@stfx.eu> wrote:
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 < santiagobragagnolo@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
participants (6)
-
Eliot Miranda -
Esteban A. Maringolo -
Norbert Hartl -
Santiago Bragagnolo -
Stephane Ducasse -
Sven Van Caekenberghe