鍍金池/ 問(wèn)答/Java  PHP  iOS  HTML/ node新手一個(gè)關(guān)于aes128加密的問(wèn)題

node新手一個(gè)關(guān)于aes128加密的問(wèn)題

下面這段代碼在node中要怎么寫(xiě)呢?

$cipher = base64_encode(openssl_encrypt(json_encode($param), 'aes-128-cbc', hash('MD5', $aesKey, true), OPENSSL_RAW_DATA, $iv));

我的代碼是這樣的,但是發(fā)現(xiàn)結(jié)果并不一樣。。。。

const hash = crypto.createHash( 'MD5' )
hash.update( aesKey )
const aesKeySignStr = hash.digest()
const iv = Math.random().toString( 36 ).substr( 2 )

const cipher = crypto.createCipher( 'aes-128-cbc', aesKeySignStr, iv )
console.log( JSON.stringify( this.params ) );
let crypted = cipher.update( JSON.stringify( this.params ), 'utf8', 'hex' )
crypted += cipher.final( 'hex' )

請(qǐng)各位大佬搭救。

回答
編輯回答
祉小皓

node不太懂,但我猜可能是這樣的
因?yàn)槌跏枷蛄亢兔罔€都是要跟分塊大小保持一致,也就是說(shuō)你用cbc-128,那么二者的大小都是16個(gè)字節(jié)
但看你的代碼顯然不是這樣

2017年6月6日 08:20
編輯回答
野橘

結(jié)果不一樣。那你把每個(gè)過(guò)程中的值都打印出來(lái)看一下啊。造成不一樣的原因就兩個(gè),1。算法不同,2。初始值不同

2018年2月11日 10:48