1996-01-22 - Why is blowfish so slow? Other fast algorithms?

Header Data

From: David Mazieres <dm@amsterdam.lcs.mit.edu>
To: cypherpunks@toad.com
Message Hash: ed9acda8ccb117b4355fd9e01b8958f5922ff1075b1e5ceb775d80827272d9c2
Message ID: <199601220700.CAA13713@amsterdam.lcs.mit.edu>
Reply To: N/A
UTC Datetime: 1996-01-22 07:01:04 UTC
Raw Date: Sun, 21 Jan 96 23:01:04 PST

Raw message

From: David Mazieres <dm@amsterdam.lcs.mit.edu>
Date: Sun, 21 Jan 96 23:01:04 PST
To: cypherpunks@toad.com
Subject: Why is blowfish so slow?  Other fast algorithms?
Message-ID: <199601220700.CAA13713@amsterdam.lcs.mit.edu>
MIME-Version: 1.0
Content-Type: text/plain


First, can someone tell me if the latest version of blowfish (the one
in Applied Crypto 2nd edition) is available online somewhere?  I
looked at a bunch of crypto ftp servers and could only find an older
version of blowfish that did not have the blf_ctx structure allowing
multiple keys to be active at a time.

More importantly, however, on a 120 MHz Pentium, the old blowfish
(compiled with gcc version 2.7.2 optimization -O6) seems to take about
12.6 microseconds for 1 M encryptions and decryptions, which works out
to about 95 cycles per byte.  This is significantly more than the 26
cycles/byte number cited in Applied Crypto 2nd edition.

Can anyone suggest what I might do to speed this up?

Failing that, can anyone suggest other secure, preferably unpatented,
shared-key encryption algorithms that could encrypt at ethernet speeds
(1 MByte/sec) without using most of the CPU on a fast Pentium or
equivalent processor?

Thanks a lot,
David






Thread