在 node.js 中重复 cryptojs aes 加密的替代方法
Alternatives to repeating a cryptojs aes encryption in node.js
我有一个加密的电子邮件 ID,我存储在数据库中。
下次出现相同的email id 时,我想加密它并查询数据库是否存在相同的。
据我所知,AES 的随机性是其安全性的关键方面之一,因此,这种方法是不可能的。我不应该将 IV 设置为重复模式。
在这种情况下,更适合采取什么方法?除了获取所有 ID 并进行客户端解密和匹配之外?
感谢任何指点。
只要你使用相同的Key和相同的IV(初始化向量),你就会得到相同的结果,例如
const crypto = require('crypto');
function encrypt(plainText, keyBase64, ivBase64) {
var key = Buffer.from(keyBase64, 'base64');
var iv = Buffer.from(ivBase64, 'base64');
/* Using 128 Bit AES with CBS. */
var cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
cipher.update(plainText, 'utf8', 'base64')
return cipher.final('base64');
};
var keyBase64 = "sTEhO2zJ8f2Lck59VppiCQ==";
var ivBase64 = 'Xpu5CSY5hz0PeDnNF0TM4A==';
var plainText = 'Sample email text';
console.log('Plaintext: ', plainText);
var cipherText = encrypt(plainText, keyBase64, ivBase64);
console.log('Ciphertext: ', cipherText);
var cipherText2 = encrypt(plainText, keyBase64, ivBase64);
console.log('Ciphertext 2: ', cipherText2);
您还可以考虑对电子邮件进行哈希处理并保存哈希,例如
var sha256 = crypto.createHash('sha256').update(plainText).digest("hex");
console.log('SHA256: ', sha256);
对于给定的电子邮件正文,哈希将是稳定的。
我有一个加密的电子邮件 ID,我存储在数据库中。
下次出现相同的email id 时,我想加密它并查询数据库是否存在相同的。 据我所知,AES 的随机性是其安全性的关键方面之一,因此,这种方法是不可能的。我不应该将 IV 设置为重复模式。
在这种情况下,更适合采取什么方法?除了获取所有 ID 并进行客户端解密和匹配之外?
感谢任何指点。
只要你使用相同的Key和相同的IV(初始化向量),你就会得到相同的结果,例如
const crypto = require('crypto');
function encrypt(plainText, keyBase64, ivBase64) {
var key = Buffer.from(keyBase64, 'base64');
var iv = Buffer.from(ivBase64, 'base64');
/* Using 128 Bit AES with CBS. */
var cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
cipher.update(plainText, 'utf8', 'base64')
return cipher.final('base64');
};
var keyBase64 = "sTEhO2zJ8f2Lck59VppiCQ==";
var ivBase64 = 'Xpu5CSY5hz0PeDnNF0TM4A==';
var plainText = 'Sample email text';
console.log('Plaintext: ', plainText);
var cipherText = encrypt(plainText, keyBase64, ivBase64);
console.log('Ciphertext: ', cipherText);
var cipherText2 = encrypt(plainText, keyBase64, ivBase64);
console.log('Ciphertext 2: ', cipherText2);
您还可以考虑对电子邮件进行哈希处理并保存哈希,例如
var sha256 = crypto.createHash('sha256').update(plainText).digest("hex");
console.log('SHA256: ', sha256);
对于给定的电子邮件正文,哈希将是稳定的。