JAVA中的PKCS5或基于密码的加密(PBE)

时间:2014-09-01 06:54:44

标签: java security encryption cryptography pkcs#5

我想用Java编写基于密码的加密和解密!

这意味着我有K (Password)P (plain Text)并创建了这样的E (encrypted Text),然后我可以使用我的第一个E解密K

正如我在StackOverflow中的问题和答案中提到的那样,herehere我的解决方案是PKCS5,但他们首先从K1生成K然后对其进行编码{ {1}}并从K1生成K2。然后使用K1加密P并解密E

但这不是我想要的。每次从K2生成K2时,新K与上一个K2不同,因此您无法使用新的K2加密文本进行解密使用之前的K2加密的。

如何用Java编写此场景?

1 个答案:

答案 0 :(得分:1)

你错了。给定相同的密码和盐(以及迭代计数,但通常会提前修复),您将获得相同的K1K2。您可以使用密文存储salt,以便生成相同的K1K2进行解密。

由于Java API错误,仅需要K2密钥编码/解码技巧。 Java的PBKDF2实现生成一个将算法设置为"PBE..."的密钥。普通AES Cipher不一定接受该密钥。因此,新的" key是使用相同的密钥字节生成的,但使用不同的算法名称("AES")。现在,如果您可以在生成期间简单地选择算法名称和密钥大小,则不需要编码/解码。但最终,K1和K2实际上是同一个关键。