0

我一直在测试一个 sha512 类。我需要从 flash cs5 中的字符串生成散列,但我需要它来匹配由 asp.net(vb) 生成的散列。它似乎在字符串的某处添加了一个零,我不知道为什么。

这些是我正在使用的文件:Porting SHA512 Javascript implementation to Actionscript

在此示例中,散列字符串是名称“Karla”

示例 (asp.net)// ** 括号显示差异在哪里 ** C4DB628AD520AFF7308ED19E91635E8E24A6C7CFD4DB2F71BBE2FA6CD63770B315A839143037BB9DB16784C0BDCEB622ECAA4077D4D8(17747486)

(as3)

C4DB628AD520AFF7308ED19E91635E8E24A6C7CFD4DB2F71BBE2FA6CD63770B315A839143037BB9DB16784C0BDCEB622ECAA4077D4D8(17087)D5023E86734748

下面在我提供的链接中添加了信息,但我认为它与我需要的内容无关,我认为我不使用 hmac,只是一个直字符串哈希,但是,当我在 vb.net 中执行此操作时,我得到了字节从字符串首先 i 有字节。

我有一种感觉,as3 代码在 sha512 类中自动转换了字符串?

希望有人也遇到过这个问题。

感谢您对此的任何帮助。

4

1 回答 1

1

这些哈希中的任何一个都不正确。字符串“Karla”的正确 SHA512 哈希是:

C4DB628AD520AFF7308ED19E91635E8E24A6C7CFD4DB2F71BBE2FA6CD63770B315A839143037BB9DB16784C0BDCEB622ECAA4077D4D817087D5023E867347408

但是,我敢打赌,AS3 哈希实际上是正确的——javascript 版本会生成正确的哈希,请参见此处——只是粘贴不正确。

在计算哈希的两个地方,它包含 byte 0x08,但在 ASP.NET 版本中,字节的高 4 位正在丢失,并且它被附加到输出字符串中,只是"8"not "08"

基本上,您的 ASP.NET 哈希生成器丢弃的数字小于0x10- 忽略前导零 - 并为您提供格式错误的哈希..

另一种判断 ASP.NET 哈希有问题的方法是它只有 126 个字符(504 个十六进制编码位)长。

于 2013-02-28T21:31:43.257 回答