There are uses for md5 despite the collision risks. In my case, I've many copies of maybe a few tens of thousands of distinct strings, but some of those strings exceed 100k and that's exceeding a 2 gig file size limit when I append them to a file. So I need a hash to represent them.
In this case, the risk of collision is negligible. I'm not using it for anti-forgery purposes, and a longer hash would just result in needless bulk. That said, a full suite of the checksum algorithms (along with support for the various common compression and media format mechanisms) would be a really nice thing to have. (But my point was that there can be good reasons to pick an algorithm which would be the wrong algorithm in a different context.) Thanks, -- Raul On Tue, Jul 15, 2014 at 12:19 PM, 'Pascal Jasmin' via Programming < [email protected]> wrote: > May I suggest also sha256 sha512 and ripemd160? > > I assume the underlying code is from openssl. The reason I did not > include md5 there is that it has been baptised insecure/compromised by the > wiki lords http://en.wikipedia.org/wiki/Cryptographic_hash_function. The > paper describing the collision attack on md5: > http://eprint.iacr.org/2009/223.pdf. Its not a craft any replacement > attack/weakness by any means, but its enough to discourage its use in the > same sense that "no one ever got fired for buying IBM". > > > > ________________________________ > From: chris burke <[email protected]> > To: Programming forum <[email protected]> > Sent: Tuesday, July 15, 2014 11:11:01 AM > Subject: Re: [Jprogramming] md5 > > > getmd5 will be in the next release of JQt (getsha1 is already there). > > AFAIK, convert/misc/md5 only works on 32-bit. > > > On Mon, Jul 14, 2014 at 7:10 PM, Raul Miller <[email protected]> > wrote: > > > I've been using the convert/misc/md5 addon, but it is rather slow. > > > > Using it on a 140k string on a moderately sized box was taking between 6 > > and 7 seconds. And I've got a lot of strings for it to grind through > (many > > gigabytes). > > > > So I decided I wanted to use compiled code. And, since we don't have a J > > compiler (yet), I decided to use C: > > > > The first thing I did was look at the source for the md5 on an ubuntu > > system. That's in coreutils, and it was something of a mess. > > > > After backing off from trying to extract the useful parts of that as a > > shared library, I found that RFC 1321 contains a reference implementation > > (which looks like it was the basis for the mess I was trying to work > > with*). That was clean enough that I could rather easily extract it, > build > > it, and get it to work. > > > > The result is at https://github.com/rdm/libmd5.so > > > > The J test suite ( > https://github.com/rdm/libmd5.so/blob/master/md5test.ijs > > ) > > was also extracted from RFC 1321, except for a couple lines which define > > the interface to the compiled code). > > > > Note that I'm using this with j602 (the 32 bit version), because that's > the > > only version where the sax xml parsing works. And, I've only tested it on > > ubuntu 14.04 lts. But if someone else needs a fast md5 implementation, > > perhaps it won't be too much work to get this working on whatever system > > you work with. > > > > FYI, > > > > -- > > Raul > > > > * P.S. I say "mess" because it has been loaded down with so many layers > of > > config toolchain and abstraction that it's really hard to find where > > anything happens. That's fine for some contexts, but useless for others. > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
