我想使用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));
每次产生不同的输出,因此除非保存散列,否则无法解密数据。 (由于目标是防止数据被解密,这将毫无意义。)
答案 0 :(得分:2)
您不想散列密码以生成密钥 - 您希望从密码中获取密钥。有标准的方法可以做到这一点。这是一个例子:PBKDF2 link to wikipedia。如果你在某个库中有aes.encrypt,那么存在某种密钥推导的可能性很高。