3Des實際上只是3個單獨的DES操作,每個操作都需要一個8字節的密鑰。這需要24字節的密鑰..但是一些實現支持16字節密鑰,其中前8個字節在場景後“自動重複”。有的實現可能不支持這一點。你怎麼能通過重複前8個字節來自己做 - 這樣的事情:
public static byte[] encrypt3DESECB(byte[] keyBytes, byte[] dataBytes) {
try {
if (keyBytes.length == 16) { // short key ? .. extend to 24 byte key
byte[] tmpKey = new byte[24];
System.arraycopy(keyBytes, 0, tmpKey, 0, 16);
System.arraycopy(keyBytes, 0, tmpKey, 16, 8);
keyBytes = tmpKey;
}
SecretKeySpec newKey = new SecretKeySpec(keyBytes, "DESede");
...
...