Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js-加密_Javascript_Node.js - Fatal编程技术网

Javascript Node.js-加密

Javascript Node.js-加密,javascript,node.js,Javascript,Node.js,我正在为node.js项目集成一个支付网关。他们有python的集成工具包,我在这方面没有太多经验。我将它们的变化从python移植到javascript。这是正确的吗 Python代码: def encrypt(plainText,workingKey): iv = 'hello' encDigest = md5.new () encDigest.update(workingKey) enc_cipher = AES.new(en

我正在为node.js项目集成一个支付网关。他们有python的集成工具包,我在这方面没有太多经验。我将它们的变化从python移植到javascript。这是正确的吗

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
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;

}
移植的代码(Node.js):

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
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;

}

它不起作用吗?我能看到的唯一可能的问题是异步与同步。例如,
var encDigest=crypto.createHash('md5')encDigest.update(工作键)时,可能无法解析代码>
被解雇。

它看起来相同,但有一些问题:
md5
不应该在安全应用程序IMO中使用。而且我不确定
iv
是否不应该是静态值。。。比如,支付是非常敏感的事情;IV永远不应该是静态的,实际上应该是尽可能随机的,并且每次加密都应该改变。当然,要解密,应该使用与加密相同的IV。加密后可以公开,而不影响安全性。通常它是以密文为前缀的。您是否尝试过随机测试,以查看是否从python和js版本获得相同的密文输出?