代码之家  ›  专栏  ›  技术社区  ›  stan

MySQL二进制存储问题

  •  0
  • stan  · 技术社区  · 15 年前

    我正在使用sha256进行哈希运算,并以二进制形式输出它,然后将其存储在mysql的二进制(32)中。

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

    但是,当我从数据库中检索这个值时,它是不同的

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

    Array ( [0] => ú [1] => È [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] => ž [20] => ?[21]=>[22]=>_¾[23]=>¨[24]=>·[25]=>9[26]=>·[27]=>_½[28]=>[29]=>5[30]=>¨[31]=>)

    Array ( [0] => ú [1] => È [2] => c [3] => [4] => 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中不存在“\”。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Mark Byers    15 年前

    使用 mysql_real_escape_string 将哈希插入数据库时。