2016-03-13 112 views
1

我打算使用crc32校验和来检查REST API调用的数据完整性。我使用一个crc32库 http://www.icana.org.ar/ICANACardRotator/source/nochump/util/zip/CRC32.ascrc32 in php and as3

这和php crc32函数给出不同的输出。 在AS3我用下面的代码

var c:crc32 = new crc32(); 
var arr:ByteArray = new ByteArray(); 
arr.writeObject("Hello World!"); 
c.update(arr); 
trace(c.getValue()); 

这给了我2098676879

在PHP我用

<?php 
$str = crc32("Hello World!"); 
printf("%u\n",$str); 
?> 

其输出472456355

有人可以帮我告诉有什么区别?

+0

你检查了字节数组吗?很可能这些是不同的。 –

回答

1

ByteArray.writeObject写入AMF编码对象到ByteArray而不是utf字符串,这就是为什么你得到不同的结果。所以解决方案是使用writeUTFBytes

 var c:CRC32 = new CRC32(); 
     var arr:ByteArray = new ByteArray(); 
     arr.writeUTFBytes("Hello World!"); 
     c.update(arr); 
     trace(c.getValue()); //output 472456355 
+0

太棒了!像魅力一样工作 –