写入密码时出现 authTagLength 错误
authTagLength error with writing to cipher
我有以下代码,我正在尝试使用 aes192 创建和写入密码,但不推荐使用 createCipher。
有人可以帮助我如何 运行 在旧的 nodejs 上 运行 时间将吐出准确的输出。
const crypto = require("crypto");
const cipher = crypto.createCipher("aes192", "abc");
let encrypted = "";
cipher.on("end", function () {
console.log(encrypted)
});
cipher.write("abc");
cipher.end();
这真的是你想要做的吗?有几个原因可以避免弃用 API 以及提供的示例中使用的密码位大小和模式。
- 已弃用
crypto.createCipher()
/crypto.createDecipher()
的 API 是为了允许引入独特的 IV as outlined in various security research such as NIST SP 800-38A。
- AES 的 192 密钥大小,虽然与 AES-128 相比尚未过时,但仍不是推荐的密钥大小; 256,参考 NIST SP 800-131A.
- node.js 实现的 OpenSSL(默认)加密库默认为 CBC mode which has known issues as outlined here。
既然我已经向您提供了不使用当前实现的原因,您应该能够使用 nvm tool 在 node.js.
的版本之间快速切换
$ nvm v6
根据 node.js crypto docs,它在 <10 之前的任何内容中都已弃用。我相信 'warning' 弃用开始出现在版本 >=8 如果没记错的话。
作为记录,您应该使用以下内容:AES 256、GCM 模式和每个密文 IV。
使用 npm 的快速包搜索将产生相当多的现有模块来提供帮助,但是我推荐我自己的库 kruptein。它实现强大的密钥派生,支持多个字符集并使用所有推荐的行业标准。
我有以下代码,我正在尝试使用 aes192 创建和写入密码,但不推荐使用 createCipher。
有人可以帮助我如何 运行 在旧的 nodejs 上 运行 时间将吐出准确的输出。
const crypto = require("crypto");
const cipher = crypto.createCipher("aes192", "abc");
let encrypted = "";
cipher.on("end", function () {
console.log(encrypted)
});
cipher.write("abc");
cipher.end();
这真的是你想要做的吗?有几个原因可以避免弃用 API 以及提供的示例中使用的密码位大小和模式。
- 已弃用
crypto.createCipher()
/crypto.createDecipher()
的 API 是为了允许引入独特的 IV as outlined in various security research such as NIST SP 800-38A。 - AES 的 192 密钥大小,虽然与 AES-128 相比尚未过时,但仍不是推荐的密钥大小; 256,参考 NIST SP 800-131A.
- node.js 实现的 OpenSSL(默认)加密库默认为 CBC mode which has known issues as outlined here。
既然我已经向您提供了不使用当前实现的原因,您应该能够使用 nvm tool 在 node.js.
的版本之间快速切换$ nvm v6
根据 node.js crypto docs,它在 <10 之前的任何内容中都已弃用。我相信 'warning' 弃用开始出现在版本 >=8 如果没记错的话。
作为记录,您应该使用以下内容:AES 256、GCM 模式和每个密文 IV。
使用 npm 的快速包搜索将产生相当多的现有模块来提供帮助,但是我推荐我自己的库 kruptein。它实现强大的密钥派生,支持多个字符集并使用所有推荐的行业标准。