在php中有一段代码,如下:
base64_encode(md5('123456',true))
上面的结果是:4QrcOUm6Wau+VuBX8g+IPg==
4QrcOUm6Wau+VuBX8g+IPg==
现在问题来了,怎样用nodejs将”123456“加密成上面的结果? 求指教、、、
大致写了下:
'use strict'; const crypto = require('crypto'); function md5(str, boolean) { var md5 = crypto.createHash('md5'); var strBuffer = Buffer.isBuffer(str) ? str : new Buffer(str); md5.update(strBuffer); //如果boolean为true,则返回16字符二进制数,否则返回32位16进制数 if (boolean) return md5.digest('binary'); return md5.digest('hex'); } //调用方法和php基本一致 const str = new Buffer(md5('123456', true), 'binary').toString('base64'); //输出可得4QrcOUm6Wau+VuBX8g+IPg== console.log(str);
可以把md5函数写在项目的utils里面去,当然想和php完全一样,那么对base64转化的函数也可以封装起来,这样就能和php的写法完全一样,当然个人感觉没必要~
@hyj1991 md5 对于确定的输入有确定的输出, base64 只是一种编码, 所以说不应该不一样的.
@magicdawn 问题是,php的md5方法,确实就有2种输出 我们正常使用的确实一般都是32位16进制,但是php的md5方法,第二个参数为true时,输出的16位二进制流,所以我给lz写的方法增加了php的第二个参数,不然就得不到他上面用php计算得到的结果 详细可以参见: http://www.w3school.com.cn/php/func_string_md5.asp
@hyj1991 感谢,非常感谢
@jakehu 不客气呀~
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
大致写了下:
可以把md5函数写在项目的utils里面去,当然想和php完全一样,那么对base64转化的函数也可以封装起来,这样就能和php的写法完全一样,当然个人感觉没必要~
@hyj1991 md5 对于确定的输入有确定的输出, base64 只是一种编码, 所以说不应该不一样的.
@magicdawn 问题是,php的md5方法,确实就有2种输出 我们正常使用的确实一般都是32位16进制,但是php的md5方法,第二个参数为true时,输出的16位二进制流,所以我给lz写的方法增加了php的第二个参数,不然就得不到他上面用php计算得到的结果 详细可以参见: http://www.w3school.com.cn/php/func_string_md5.asp
@hyj1991 感谢,非常感谢
@jakehu 不客气呀~