2010-03-06 64 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

回答