gpt4 book ai didi

php - as3crypto 的 sha1 哈希值与 PHP 生成的哈希值不同

转载 作者:行者123 更新时间:2023-12-02 23:31:21 27 4
gpt4 key购买 nike

使用 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”不同。

您正在将十进制数转换为十六进制字节数组并对其进行哈希处理,然后将其与生成的字符串哈希进行比较在 PHP 中。这些永远不会匹配。

如果您确实需要比较两个十六进制数,那么对 PHP 进行这样的更改可能应该可行。

print "SHA:" . sha1(dechex(12345));

See the dechex PHP documentation for more.

关于php - as3crypto 的 sha1 哈希值与 PHP 生成的哈希值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5031566/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com