【发布时间】:2021-11-15 07:16:44
【问题描述】:
我几天来一直在以下问题上苦苦挣扎,之前发布了同样的问题,但没有得到任何积极的反馈。
我正在使用 mysql in build aes_encrypt 方法来加密新的和现有的数据。 https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html
SET @@SESSION.block_encryption_mode = 'aes-256-ecb';
INSERT INTO test_aes_ecb ( column_one, column_two )
values ( aes_encrypt('text','key'), aes_encrypt('text', 'key'));
我使用了 ecb ciper,所以不需要使用 iv。问题是我无法从 node.js 端解密它。
我正在使用 sequelize 并尝试从节点端通过 model --> decrypt 调用数据。
我尝试了以下库,
"aes-ecb": "^1.3.15",
"aes256": "^1.1.0",
"crypto-js": "^4.1.1",
"mysql-aes": "0.0.1",
以下是 sequelize 调用
的代码 sn-psasync function testmysqlAESModel () {
const users = await test.findAll();
console.log('users', users[0].column_one);
var decrypt = AES.decrypt( users[0].column_one, 'key' );
}
它返回的缓冲区数据和无法从节点端解密,有人可以为此提供适当的例子吗?我挣扎了好几天。
编辑
将记录插入mysql,如下查询。
SET @@SESSION.block_encryption_mode = 'aes-256-ecb';
INSERT INTO test_aes_ecb ( id, column_one, column_two )
VALUES (1, 2,AES_ENCRYPT('test',UNHEX('gVkYp3s6v9y$B&E)H@McQeThWmZq4t7w')));
在这样调用的nodejs中,
testmysqlAESModel();
async function testmysqlAESModel () {
const users = await test.findAll();
console.log('users', users[0].column_one);
var decipher = crypto.createDecipheriv(algorithm, Buffer.from("gVkYp3s6v9y$B&E)H@McQeThWmZq4t7w", "hex"), "");
var encrypted = Buffer.from(users[0].column_one); // Note that this is what is stored inside your database, so that corresponds to users[0].column_one
var decrypted = decipher.update(encrypted, 'binary', 'utf8');
decrypted += decipher.final('utf8');
console.log(decrypted);
}
我遇到了错误,
我使用下面的链接来创建 256 位密钥。
https://www.allkeysgenerator.com/Random/Security-Encryption-Key-Generator.aspx
还是无法解决,能否提供样例项目或任何类型的支持代码sn-p?
【问题讨论】:
-
您是如何创建密钥的/密钥的长度是多少?
-
我的 ket 是字母数字键,类似于这种格式 8d6754e1-4524-4b1b-b0b8-81156c11c3a1
-
它是从 uuid 生成器创建的
标签: mysql node.js encryption sequelize.js aes