2016-03-13 110 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

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