我是密码学新手,我正在使用 nodejs 来提供应用程序。
我的应用程序使用我想在生产之前加密它们的配置文件,当 nodejs 服务器需要这些文件(在生产中)时,它会解密它们。
我crypto.createCipheriv(algo, key, iv)
用来加密。算法是:'aes-256-ctr'。密钥是使用密码创建的:
const key=crypto.createHash('sha256').update(String(password)).digest('base64').substr(0,32)
iv 是通过以下方式生成的:
const iv = crypto.randomBytes(16)
因此,如果我想解密文件,我需要密钥和 iv。我存储用于生成密钥(散列)的密码,并将其与用户给定的密码匹配,但我如何存储和检索 iv?
当我将 iv(使用 fs.writefile 和 iv const)写入文件并尝试读取它时,当我尝试解密时,我看到了错误:
错误:无效的密钥长度
即使当我在服务器中生成和使用 iv 时,它也会毫无问题地加密/解密。
所以我的问题是:如何存储我使用的 IV 以便以后解密文件?以后尝试解密时如何使用它?
有没有更好的方法/实践来加密配置文件并解密它们?我想为我的应用程序提供加密/散列的个人数据,例如配置数据、用户/密码等。
我的方式是好的还是我走错了方向?我会很感激一些精通加密的用户可以帮助我......
谢谢