使用 PHP 产生与 CryptoJS.enc.Base64 相同的结果
Produce same result as CryptoJS.enc.Base64 using PHP
我有一个 javascript 函数,我试图将其转换为 PHP,它使用 CryptoJS 库,特别是 components/enc-base64-min.js
和 rollups/md5.js
。可以找到它们 here.
里面就是这段代码
// Let's say str = 'hello';
var md5 = CryptoJS.MD5(str);
md5 = md5.toString(CryptoJS.enc.Base64);
// md5 outputs "XUFAKrxLKna5cZ2REBfFkg=="
我假设 str
变量是使用 md5 散列然后编码为 Base64,所以我尝试了这个简单的代码
$md5 = md5($str);
$md5 = base64_encode($md5);
// md5 outputs "MmZjMGE0MzNiMjg4MDNlNWI5NzkwNzgyZTRkNzdmMjI="
然后我尝试验证两个输出,看起来 JS 输出甚至不是有效的 Base64 字符串。
为了进一步理解,我尝试从 W3Schools 中查找 toString()
参数,但这对我来说没有意义,根据参考资料,该参数应该是一个整数 (2, 8或 16),那为什么用 CryptoJS.enc.Base64
代替?
我的目标不是使用 JS 生成有效的 base64 编码字符串,而是使用 PHP.
生成相同的输出
php 的 md5()
带有单个参数 returns md5 散列 作为十六进制字符串 .
相反,您希望将原始字节编码为 Base64,因此您必须将可选参数 $raw_output
也传递给 md5()
(设置为 true
)
$md5 = md5($str, true);
我有一个 javascript 函数,我试图将其转换为 PHP,它使用 CryptoJS 库,特别是 components/enc-base64-min.js
和 rollups/md5.js
。可以找到它们 here.
里面就是这段代码
// Let's say str = 'hello';
var md5 = CryptoJS.MD5(str);
md5 = md5.toString(CryptoJS.enc.Base64);
// md5 outputs "XUFAKrxLKna5cZ2REBfFkg=="
我假设 str
变量是使用 md5 散列然后编码为 Base64,所以我尝试了这个简单的代码
$md5 = md5($str);
$md5 = base64_encode($md5);
// md5 outputs "MmZjMGE0MzNiMjg4MDNlNWI5NzkwNzgyZTRkNzdmMjI="
然后我尝试验证两个输出,看起来 JS 输出甚至不是有效的 Base64 字符串。
为了进一步理解,我尝试从 W3Schools 中查找 toString()
参数,但这对我来说没有意义,根据参考资料,该参数应该是一个整数 (2, 8或 16),那为什么用 CryptoJS.enc.Base64
代替?
我的目标不是使用 JS 生成有效的 base64 编码字符串,而是使用 PHP.
生成相同的输出php 的 md5()
带有单个参数 returns md5 散列 作为十六进制字符串 .
相反,您希望将原始字节编码为 Base64,因此您必须将可选参数 $raw_output
也传递给 md5()
(设置为 true
)
$md5 = md5($str, true);