我想使用 aes 256 位基于散列密码来加密数据。问题是像 argon2 和 bcrypt 这样的哈希会自动添加盐,所以密码每次都是不同的。有什么办法可以做到这一点吗?
这是我尝试过的示例:
const aes = require("aes256");
const argon2 = require("argon2");
const pass = process.argv[2];
const data = process.argv[3];
argon2.hash(pass).then(result => console.log(aes.encrypt(result, data));
这每次都会产生不同的输出,因此除非保存哈希值,否则无法解密数据。 (这毫无意义,因为目标是防止数据被解密)。
最佳答案
您不想对密码进行哈希处理来生成 key ——您希望从密码中派生出 key 。有一些标准方法可以做到这一点。下面是一个示例:PBKDF2 link to wikipedia 。如果您在某个库中有 aes.encrypt,那么很有可能也存在某种 key 派生。
关于javascript - 基于哈希密码加密数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47604949/