aşağıdaki kod yükseltme sonra 5.7.0Geçersiz Anahtar Uzunluğu şifrelemek ve ödeme geçidi hizmete istekleri şifresini NodeJS 6
function Encrypt(plainText, workingKey) {
var m = crypto.createHash('md5');
m.update(workingKey);
var key = m.digest('binary');
var iv = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f';
var cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
var encoded = cipher.update(plainText, 'utf8', 'hex');
encoded += cipher.final('hex');
return encoded;
};
function Decrypt(encText, workingKey) {
var m = crypto.createHash('md5');
m.update(workingKey)
var key = m.digest('binary');
var iv = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f';
var decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
var decoded = decipher.update(encText, 'hex', 'utf8');
decoded += decipher.final('utf8');
return decoded;
};
Ancak NodeJS 6.0 yükselttikten sonra Düğüm Js ile düzgün çalışır (ayrıca 6.1 denedik) Aşağıdaki hatayı alıyoruz.
Debug: internal, implementation, error
Error: Uncaught error: Invalid key length
at Error (native)
at new Cipheriv (crypto.js:184:16)
at Object.Cipheriv (crypto.js:182:12)
Bizim anahtar uzunluğu daima 16 karakter (yani 128 bit) olmuştur ve yükseltme işleminden önce çalışıyordu. Bu sorun neden şimdi oluyor?
6.x kararlı yapıdan uzaktır, kullanmak zorunludur? Şirketimizde 5.5.0 kullanıyoruz, 6.x de denedim, ama bir saat içinde geri dönmek zorunda kaldım. – libik
Neden "ikili" dizeleri kullanıyorsunuz? Sadece bir Tampon kullanın ve onunla yapılmalı; '' ikili '' m.digest ('ikili') 'dan kaldırın. –
@ Artjom-b. Çok teşekkür ederim. Ne önerdin işe yaradı. Neden çalıştığını açıklamak için yeterince nazik misiniz? – Anomaly211