암호 라이브러리를 사용하여 노드의 수준 암호화 데이터에 노력하고 있습니다.Node.js 암호 암호 특수 characeters
전 "가격 - 스미스"
확실하지 왜
function encrypt(data, key) {
if (data === null)
return null
else if (typeof data === 'undefined')
return undefined;
else if (data === '')
return '';
var iv = crypto.randomBytes(16);
var cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
cipher.update(data, 'utf8', 'binary');
return Buffer.concat([iv, cipher.final()]).toString('base64');
}
function decrypt(cipher, key) {
if (cipher === null)
return null
else if (typeof cipher == 'undefined')
return undefined;
else if (cipher === '')
return '';
var cipher = new Buffer(cipher, 'base64');
var iv = cipher.slice(0, 16);
var ciphertext = cipher.slice(16);
var decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
decipher.update(ciphertext, 'binary', 'utf8');
return decipher.final('utf8');
}
오류
TypeError: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
at Decipheriv.Cipher.final (crypto.js:287:27)
-
$ 같은 특수 문자를 제외하고 잘 작동하는 것 같다
각 필드 값에 별도의 IV가 사용됩니다. 그렇지 않으면 동일한 필드 값이 h 동일한 암호를가하십시오. 그래서 IV를 처음 16 바이트로 저장하고 암호 해독 전에 연결합니다. 어쩌면 이것이 내 문제 영역이 될 수 있을까?
감사합니다. Andrew