我有一个3DES 密码被这样初始化对象的端部产生的垃圾算法结束成功地:Java的3DES加密在加密数据
String unencryptedText = "192 character length text in clear.... ";
byte[] bytesUnencryptedText = unencryptedText.getBytes("UTF8");
byte[] bytesEncryptedData = cipher.doFinal(bytesUnencryptedText);
当我们看一看在由doFinal生成的加密数据,我们注意到正在返回200个字节,而不是192如我们预期。这些额外的8个字节采用以下六位值:08.
前192个字节是正确的,我们已经能够解密它们并获得我们的原始数据。但额外的8个字节在我们的HSM上产生错误。
我们该如何防止密码注入这些额外的字节?
数据长度是否总是8个字节的倍数? – 2015-02-10 18:27:09
始终指定完全限定的密码字符串,因为不同的提供者可能具有不同的默认值。我怀疑你是'Cipher.getInstance(“DESede/CBC/PKCS5Padding”);'。 – 2015-02-10 18:28:40
@ ArtjomB。不,作为纯文本并不总是。 – 2015-02-10 19:17:18