PHP的base64_encode结果不类似于JavaScript的编码结果
代码片段:
PHP:
$shaVal = '59bc125840733ea828f42e276661b01e177f1414'; $enc = base64_encode(pack('H*', $shaVal)); echo $enc; //prints => WbwSWEBzPqgo9C4nZmGwHhd/FBQ=
在Javascipt我使用buffer
npm模块
let Buffer = require('buffer').Buffer; let shaVal = '59bc125840733ea828f42e276661b01e177f1414'; //function similar to php's pack() and returns binary data let bData = Buffer.from(shaVal, 'hex').toString(); console.log('bData ', bData) //encode with base64 let val64 = Buffer.from(bData, 'binary').toString('base64'); console.log('base 64 encode ', val64) //prints => Wf0SWEBzPv0o/S4nZmH9Hhd/FBQ=
我怎样才能得到完全相同的输出由PHP打印?
注意:这两个选项显示二进制数据为Y X@ s> ( .'fa
这是因为PHP包返回string,在JavaScript缓冲区返回数组。
这个答案可能有所帮助: https : //stackoverflow.com/a/41962257/3086531