tisdag, oktober 10, 2006

Dags för lite kryptografi i Java igen. Det går så långt mellan varven nu att jag glömmer bort hur man gör :-/

Den här gången är det 3DES som ska implementeras.

Först skapar jag nyckeln (från 24 slumpmässiga bytes, från random.org), och de två chifferobjekten.

//the key, from 24 random bytes ("_keyData")
_key = SecretKeyFactory
   .getInstance("TripleDES")
   .generateSecret( new DESedeKeySpec( _keyData));
            
//the cipher objects for encryption and decryption
_encryptor = Cipher.getInstance( "TripleDES");
_encryptor.init( Cipher.ENCRYPT_MODE, _key);
_decryptor = Cipher.getInstance( "TripleDES");
_decryptor.init( Cipher.DECRYPT_MODE, _key);

Att kryptera och dekryptera är sedan lätt:

//encrypt a byte[]
byte[] encryptedData = _encryptor.doFinal( cleartextData);

//decrypt a byte[]
byte[] decryptedData = _decryptor.doFinal( encryptedData);

//cleartextData and encryptedData is now the same!

Det luriga ligger som vanligt i att försöka få tag i och installera en provider. Jag använder helst den helfria BouncyCastle här.

Men i detta fallet använder jag den medföljande implementationen av 3DES.

Algoritmnamnen ja... usch vad många gånger det har blivit fel. När man skrivit "3DES" istället för "TripleDES" till exempel.

Inga kommentarer: