Blowfish Schlüsselformat

Cromon

Erfahrenes Mitglied
Hallo zusammen!

Ich versuche momentan gerade eine korrekte Implementierung des Blowfishalgorithmus hinzubekommen. Dabei scheitere ich momentan gerade bei der Generierung des Schlüssels. Ich weiss nicht, ob dieser Schlüssel einfach irgendwas zufälliges sein kann, oder ob da etwas spezielles vom Format her nötig ist. Momentan verwende ich folgenden Code:
C#:
namespace Cryptography
{
    public class BlowfishKey
    {
        public BlowfishKey(int keyLen)
        {
            long salt = DateTime.Now.ToFileTime();
            byte[] saltBytes = BitConverter.GetBytes(salt);
            PasswordDeriveBytes pdb = new PasswordDeriveBytes("_BLOWFISH", saltBytes);
            Key = pdb.GetBytes(keyLen / 8);
        }

        public byte[] Key
        {
            get;
            private set;
        }
    }
}

Auf anderen Seiten habe ich aber jetzt gelesen, dass man da nicht einfach so wie oben einen Pseudozufallszahlen-Schlüssel verwenden kann sondern der einem gewissen Format genügen muss. Ist das korrekt? Oder geht der Schlüssel, den ich da generiere?

Gruss
Cromon
 
Hallo,

soweit ich das richtig aus den Sourcen von Bruce Schneier (Entwickler von Blowfish) sehen kann, ist es relativ egal was als Key verwendet wird. Auch in der Beschreibung des Algorithmus auf Wikipedia oder von Schneier sehe ich nichts besonderes.

Quelle:
http://www.schneier.com/blowfish-download.html (Source Code von Blowfish, diverese Programmiersprachen)

Auszüge aus der README von der Referenz Implementierung:
[...]
To generate a password from a text string, I suggest using MD5 (or MD2) to produce a 16 byte message digest that can then be passed directly to BF_set_key().
[...]

[...]
Blowfish is an interesting cipher in that it can be used with a variable length key. 'len' is the length of 'key' to be used as the key. A 'len' of 16 is recomended by me, but blowfish can use upto 72 bytes.
[...]

Gruß
BK
 
Zurück