【发布时间】:2021-11-02 07:05:02
【问题描述】:
我正在尝试用 java 开发一个需要加密的 android 应用程序。我也想使用 AES-256 进行加密。但是当我看它的教程时,它总是会生成一个随机密钥。我的问题是:如果我用随机密钥加密字符串,如何解密它?此外,我几乎尝试了 web 中的所有代码,但没有一个有效,所以你能提供一个没有盐和 IV 的 AES-256 加密代码。如果我知道错了,请纠正我并教我真相。
详细信息:我正在尝试制作密码管理器应用程序。 App有两个密码,第一个是我们用于加密字符串数据的主密码。第二个是我们要管理的密码。主密码存储在用户心中。其他密码将以加密版本存储在应用程序中。当用户想要查看他的密码时,他将输入他的主密钥来解密加密的密码。那么我该怎么做呢?用户的主密码将是 32 位或 64 位,我认为我们不需要生成随机密钥。你能告诉我一些方法吗?我不是以英语为母语的人,抱歉我的英语不好。感谢您的帮助。
【问题讨论】:
-
如果您没有在设备上存储加密密钥,我建议您搜索“PBKDF2”或“ARGON2i”——这些是接受用户输入(“密码短语”)的密钥派生函数并为您生成加密密钥。
-
但不会每次都生成随机密钥吧?
-
对。例如PBKDF2 您需要在您的应用程序第一次启动时生成一个 RANDOM salt,以供以后使用您需要读取此 salt(无需隐藏 salt)并将其用作以下密钥派生的输入。
-
谢谢兄弟。你帮了我很多。
-
@MichaelFehr 我有一个问题。如果我不生成和嵌入盐,它会安全吗?我想使用 PBKDF2 和 AES 128 或 256 进行加密。
标签: java android encryption aes