使用 as3 中的 as3crypto 从字符串“12345”生成 SHA1 哈希,与示例中的操作方式相同:
var sha1:SHA1 = new SHA1;
var src:ByteArray = Hex.toArray("12345");
var digest:ByteArray = sha1.hash(src);
trace('SHA:' + Hex.fromArray(digest));
结果:ec60c0fd70d82a7785f6c9a02dbe16f2e40b1344
在 PHP 中使用相同的字符串生成 SHA1:
print "SHA:".sha1("12345");
结果:8cb2237d0679ca88db6464eac60da96345513964
如果我尝试其他工具来获取哈希值,我会得到第二个结果,因此看起来 PHP 的结果是正确的。
问题:如何使用 as3crypto 获得相同的哈希值?
顺便说一句:在测试时,我发现使用 as3crypto 的另一种方法给了我另一个(错误?)结果:
var src:ByteArray = new ByteArray();
src.writeUTF("12345");
var digest:ByteArray = sha1.hash(src);
trace('SHA:' + Hex.fromArray(digest));
结果:b98cfbc53daec4029895585ab198f7403d0d0506
十六进制(您使用 Hex.toArray 转换它)值 12345 与字符串“12345”不同。
您正在转换一个小数 to a 十六进制字节数组并对它进行哈希处理,然后将其与字符串的哈希值在 PHP 中生成。这些永远不会匹配。
如果您确实需要比较两个十六进制数,那么像这样对 PHP 进行更改可能应该可行。
打印“SHA:”。 sha1(dechex(12345));
有关更多信息,请参阅 dechex PHP 文档。 http://www.php.net/manual/en/function.dechex.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)