来自as3crypto的sha1哈希值与用PHP创建的哈希值不同
使用as3crypto在as3中使用字符串'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获取相同的哈希值?
BTW:在测试时我发现as3crypto的另一种方式给了我另一个(错误的?)结果:
var src:ByteArray = new ByteArray();
src.writeUTF("12345");
var digest:ByteArray = sha1.hash(src);
trace('SHA:' + Hex.fromArray(digest));
结果:b98cfbc53daec4029895585ab198f7403d0d0506
没有找到相关结果
已邀请:
4 个回复
咖哀烈
抚驰
第一个额外的Hex.fromString避免了其他人提到的十进制转换。 注意:as3corelib版本更简单:as3corelib SHA1
昧伎
函数测试了它:
可能的罪魁祸首是 - 你在这一行的输入数据上使用
:
当您需要将原始字符串放在字节数组中时。我不知道AS3,所以不能回答为什么你的第二次尝试也失败了。
拈吉勉犬姆
使用
,此方法将字符串写入bytesarray对象而不使用BOM。