【问题标题】:Why does SHA1 on MySQL computes different hashes with plus operator?为什么 MySQL 上的 SHA1 使用加号运算符计算不同的哈希?
【发布时间】:2014-10-26 22:58:46
【问题描述】:

在 mysql 上执行 sha1() 时,我得到不同的结果,具体取决于字符串的连接方式。

加号查询

SELECT SHA1("test"+"6JjSrnm5HX4MiNmJpC0M8VMAj4No6Bv9")

产生哈希c1dfd96eea8cc2b62785275bca38ac261256e278

使用CONCAT()查询

SELECT SHA1(CONCAT("test", "6JjSrnm5HX4MiNmJpC0M8VMAj4No6Bv9"))

产生哈希17b80b7eb824d0796c6203a231ac2b2d5f41f949

为什么 MySQL 会那样做?

查询在 PHPMyadmin 中执行的位置

【问题讨论】:

  • 刚刚做了这个小测试:set @tester = "test"+"6JjSrnm5HX4MiNmJpC0M8VMAj4No6Bv9"; select @tester;,结果是 6...与 concat btw 的结果非常不同....cheers ;)
  • 我明白了,谢谢 :) 把它作为答案发布,它具有很好的自学效果 :P 正在与 C# 混淆。
  • @Kimmax...当我有这样的疑问时,我总是做一个简单的测试,你可以将它们应用于很多案例...干杯:)

标签: mysql hash operators sha1 concat


【解决方案1】:

我做了这个小测试:

set @tester = "test"+"6JjSrnm5HX4MiNmJpC0M8VMAj4No6Bv9"; 
select @tester;

这将显示数字6 作为结果。 这样我们就可以观察到concat 的不同之处,以及为什么sha1 计算的不同之处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-08
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多