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

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

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

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

如何用Java编写此方案?

最佳答案

你误会了。给定相同的密码和盐(以及迭代次数,但是通常预先确定),您将获得相同的K1K2。您可以将盐与密文一起存储,以便可以生成相同的K1K2进行解密。

仅由于Java API错误,才需要K2密钥编码/解码技巧。 Java的PBKDF2实现生成一个密钥,该密钥的算法设置为"PBE..."。普通AES Cipher不一定必须接受该密钥。因此,将使用相同的密钥字节但使用不同的算法名称("AES")来生成“新”密钥。现在,如果您只需在生成过程中选择算法名称和密钥大小,就无需进行编码/解码。但最后,K1和K2实际上是相同的密钥。

关于java - JAVA中的PKCS5或基于密码的加密(PBE),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25600328/

10-12 00:28