2010-03-06 62 views
0

我使用sha256進行散列並以二進制形式輸出,並將其存儲在Mysql的BINARY(32)中。Mysql二進制存儲問題

echo $testsha256 = hash('sha256', "aKyAmNsb", true); 

然而,當我從數據庫中檢索該值,這是不同的

print_r(str_split($returnedpassword)); 
echo "<br>"; 
print_r(str_split($testsha256)); 
echo "<br>"; 

陣列([0] => U [1] => E [2] => C [3] => [4] => u [5] => k [6] => [7] => a [8] =>Ð[9] =>‰[10] => V [11] => [12] => E [13] => [[14] => [15] =>Ø[16] => [17] => Q [18] => [19] => => [21] => [22] => [24] => [24] =>÷[25] => 9 [26] => [27] => [28] => ([0] =>ú[1] =>È[2] => c [3] => [4] => [30] => [31] =>)

= > u [5] => k [6] => [7] => \ [8] => a [9] =>Ð[10] =>‰[11] => V [12] => 13] => E [14] => [[15] => [16] =>Ø[17] => [18] => Q [19] => [20] => [21] = >? [22] => [23] => [24] => [25] =>÷[26] => 9 [27] => [28] => [29] => [30] = > 5 [31] =>)

正如您所看到的,從Mysql返回的二進制文件在索引8的'a'之前缺少'\'。索引8應該保留'\',就像它在$ testsha256,但是'\'不存在於$ returnedresult中

+0

你如何插入數據?你可以發佈你的PHP代碼插入? – 2010-03-06 19:23:43

+0

聽起來像你的工具鏈中的某些東西已經破壞了一些控制字符,或者可能發生了一些不需要的編碼轉換。你在用什麼語言?什麼實際上到數據庫(「從表中選擇十六進制(值)」)? – Martin 2010-03-06 19:26:54

回答