node新手一个关于aes128加密的问题

下面这段代码在node中要怎么写呢?

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

我的代码是这样的,但是发现结果并不一样。。。。

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' )

请各位大佬搭救。

阅读 2.7k
2 个回答

node不太懂,但我猜可能是这样的
因为初始向量和秘钥都是要跟分块大小保持一致,也就是说你用cbc-128,那么二者的大小都是16个字节
但看你的代码显然不是这样

结果不一样。那你把每个过程中的值都打印出来看一下啊。造成不一样的原因就两个,1。算法不同,2。初始值不同

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题