nodejs md5,其中raw_output与php中的md5(data,raw_output)类似

时间:2017-06-28 03:04:50

标签: php node.js

php中的

md5

  

md5(string $ str [,bool $ raw_output = false])

     

如果可选的raw_output设置为TRUE,则md5摘要将以原始二进制格式返回,长度为16。

所以你可以在php中执行以下操作:

$ php -a
>>> md5('data', true)
=> b"ìw\x7F8]=■╚ü] ¸I`&▄"

我尝试在nodejs中使用crypto:

$ node
>>> crypto.createHash('md5').update('data').digest('binary')
'w8]=þÈ] ÷I`&Ü'

但结果不一样

我想用nodejs中的raw_output选项加密数据,如何实现呢?

2 个答案:

答案 0 :(得分:0)

您的编码为'二进制'而使用'十六进制'代替

crypto.createHash('md5').update('data').digest('hex')

https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding

答案 1 :(得分:0)

所有这些都做同样的事情:

Mac OS command line:  md5 -q -s "my string" | xxd -p -r | openssl base64

PHP: $hash = md5("my string", true); $result = base64_encode($hash);

Node.JS:  crypto.createHash('md5').update("my string", "binary").digest('base64');