1
我正在爲我的node.js項目集成一個支付網關。他們有python集成套件,我沒有太多的經驗。我將他們的變化從python移植到了javascript。它是否正確 ?Node.js - 加密
Python代碼:
def encrypt(plainText,workingKey):
iv = 'hello'
encDigest = md5.new()
encDigest.update(workingKey)
enc_cipher = AES.new(encDigest.digest(), AES.MODE_CBC, iv)
encryptedText = enc_cipher.encrypt(plainText).encode('hex')
return encryptedText
移植的代碼(Node.js的):
function encrypt(plainText, workingKey){
var iv = 'hello';
var encDigest = crypto.createHash('md5');
encDigest.update(workingKey);
var enc_cipher = crypto.createCipheriv('aes-256-cbc', encDigest, iv);
var encryptedText = enc_cipher.encrypt(plainText).encode('hex');
return encryptedText;
}
它看起來相同,但有些問題:md5不應該用於安全應用IMO。而且我不確定'iv'是否應該不是一個靜態值......就像支付是非常敏感的; – DanFromGermany
IV應該永遠不要是靜態的,實際上應該儘可能隨機,並且應該爲每個加密而改變。當然要解密,你應該使用與加密相同的IV。加密後,它可以公開,而不會影響安全性。通常它以密文爲前綴。 –
你有沒有試過隨機測試,看看你是否從python和js版本得到相同的密文輸出? – Paul