首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自sha1的as3crypto散列与用as3crypto生成的散列不同

来自sha1的as3crypto散列与用as3crypto生成的散列不同
EN

Stack Overflow用户
提问于 2011-02-17 16:16:53
回答 4查看 2.7K关注 0票数 2

使用as3crypto在as3中使用as3crypto从字符串'12345‘中生成as3散列,就像在这里的示例中那样:

代码语言:javascript
复制
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:

代码语言:javascript
复制
print "SHA:".sha1("12345");

结果: 8cb2237d0679ca88db6464eac60da96345513964

如果我尝试其他工具来获得散列,就会得到第二个结果,因此PHP的结果看起来是正确的。

问:,我如何才能获得与as3crypto?相同的哈希

顺便说一句:在测试时,我发现用as3crypto的另一种方式给了我另一种(错了吗?)结果:

代码语言:javascript
复制
var src:ByteArray = new ByteArray();
src.writeUTF("12345");
var digest:ByteArray = sha1.hash(src);
trace('SHA:' + Hex.fromArray(digest));

结果: b98cfbc53daec4029895585ab198f7403d0d0506

EN

回答 4

Stack Overflow用户

发布于 2011-02-17 16:38:37

十六进制(您正在用Hex.toArray转换它)值12345与字符串"12345“不一样。

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

如果您绝对需要将两个十六进制数比较在一起,那么对PHP的更改可能会奏效。

打印"SHA:“sha1(dechex(12345));

有关更多信息,请参见dechex文档。

票数 2
EN

Stack Overflow用户

发布于 2012-04-14 23:18:47

使用php库匹配php sha1的正确方法是执行以下操作:

代码语言:javascript
复制
var src:ByteArray = Hex.toArray(Hex.fromString(srcString));
var sha1:SHA1 = new SHA1();
var hashedString:String = Hex.fromArray(sha1.hash( src ));

正如其他人所提到的,第一个附加的Hex.fromString避免了十进制转换。

注意: as3corelib版本要简单得多:as3corelib SHA1

代码语言:javascript
复制
var hashedString:String = SHA1.hash( srcString );
票数 2
EN

Stack Overflow用户

发布于 2011-02-17 16:25:27

PHP输出绝对是正确的。我对MySQL的sha1函数进行了测试:

代码语言:javascript
复制
mysql> select sha1('12345');
+------------------------------------------+
| sha1('12345')                            |
+------------------------------------------+
| 8cb2237d0679ca88db6464eac60da96345513964 |
+------------------------------------------+

可能的罪魁祸首是,您在这一行的输入数据上使用了Hex.toArray()

代码语言:javascript
复制
var src:ByteArray = Hex.toArray("12345");

当您需要原始字符串在字节数组中时。我不知道AS3,所以不能回答为什么你的第二次尝试也失败了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5031566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档