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

标签 java security encryption cryptography pkcs#5

我想用Java写一个基于密码的加解密!

这意味着我有一个 K(密码)P(纯文本) 并创建这样一个 E(加密文本)然后我可以用我的第一个 K 解密那个 E

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

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

我如何用 Java 编写这个场景?

最佳答案

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

K2 key 编码/解码技巧只是因为 Java API 错误才需要。 Java 的 PBKDF2 实现生成一个 key ,其算法设置为 "PBE..."。普通 AES Cipher 不一定接受该 key 。因此,使用相同的 key 字节生成"new" key ,但使用不同的算法名称 ("AES")。现在,如果您可以在生成过程中简单地选择算法名称和 key 大小,那么就不需要编码/解码了。但最终,K1 和 K2 实际上是同一个 key 。

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

相关文章:

java - 没有空构造函数 : android class

java - Swing 和线程

php - 在 url 中隐藏真实的数据库对象 ID

c# - Java SecretKey 并在 C# 中复制它的行为

c# - 如何对密码进行加密? (csharp/dotnet - azure sql 数据库)

java - 使用 Java 在类路径中添加 .jar 文件

java - 为什么这个 java applet 代码没有获取每个 MouseClicked 事件?

security - 关于 AWS S3 SSL 弃用和 iOS SDK 的可疑之处

javascript - 浏览器扩展程序(Chrome 或其他)的后台脚本是否可访问?

java - 非对称加密算法中如何分配公钥?