Kaz*_*tus 5 javascript php cryptography cryptojs
我有一个javascript函数,试图将其转换为PHP,它使用CryptoJS库,具体来说是components/enc-base64-min.js和rollups/md5.js。他们可以在这里找到。
这是这段代码
// Let's say str = 'hello';
var md5 = CryptoJS.MD5(str);
md5 = md5.toString(CryptoJS.enc.Base64);
// md5 outputs "XUFAKrxLKna5cZ2REBfFkg=="
Run Code Online (Sandbox Code Playgroud)
我假设str使用md5 对变量进行了哈希处理,然后将其编码为Base64,所以我尝试了以下简单代码
$md5 = md5($str);
$md5 = base64_encode($md5);
// md5 outputs "MmZjMGE0MzNiMjg4MDNlNWI5NzkwNzgyZTRkNzdmMjI="
Run Code Online (Sandbox Code Playgroud)
然后我尝试验证两个输出,看起来JS输出甚至不是有效的Base64字符串。
为了进一步理解,我尝试toString()从W3Schools中查找参数,但这对我来说没有意义,因为根据参考,该参数应该是整数(2、8或16),那么为什么要CryptoJS.enc.Base64使用它呢?
我的目标不是使用JS生成有效的base64编码的字符串,而是使用PHP生成相同的输出。
md5()带有单个参数的php 以十六进制字符串形式返回md5哈希值。
相反,您希望将原始字节编码为Base64,因此您也必须将可选参数传递$raw_output给md5()(设置为true)
$md5 = md5($str, true);
Run Code Online (Sandbox Code Playgroud)
http://php.net/manual/it/function.md5.php
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |