使用Java的最有效方式';s DES实现对单个(64位)块进行加密?
我有一种使用Java的DES实现对单个(64位)块进行加密的方法使用Java的最有效方式';s DES实现对单个(64位)块进行加密?,java,performance,des,Java,Performance,Des,我有一种使用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 =
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 */ }
}
明文块始终小于或等于64位。填充和链接是分别实现的。这工作正常,但运行非常缓慢
所以我的问题是:有没有更有效的方法用Java的DES加密单个数据块?我正在用字节数组对一个具有相同密钥和数据的非优化自定义实现进行测试,速度是原来的两倍多。这是在我拆分了该方法的前半部分之后(直到获得键工厂
)到构造函数中。