我有一个使用 Java 的 DES 实现加密单个(64 位)块的方法。
public BitSet encrypt(BitSet plaintextBlock, BitSet key)
{
try {
Cipher c = Cipher.getInstance("DES/ECB/NoPadding");
SecretKeyFactory sf = SecretKeyFactory.getInstance("DES");
Key desKey = sf.generateSecret(new DESKeySpec(key.toByteArray()));
c.init(Cipher.ENCRYPT_MODE, desKey);
byte[] input = plaintextBlock.toByteArray();
byte[] encrypted = c.doFinal(input);
return BitSet.valueOf(encrypted);
} catch (Exception e) { /* Exception handling omitted */ }
}
将plainTextBlock
始终小于或等于 64 位。填充和链接是分开实现的。这工作正常,但结果运行非常缓慢。
所以我的问题是:有没有一种更有效的方法来使用 Java 的 DES 加密单个块?