我正在尝试创建与 Mariadb 中生成的 sha1 哈希相同的 sha1 哈希以进行相等查找。
我试过这个:
Python 文件
import hashlib
columns = ["one", "two", "three"]
column_str = ",".join(columns)
result = hashlib.sha1(column_str.encode()).hexdigest()
Mariadb 专栏
hash char(40) GENERATED ALWAYS AS (sha(concat_ws(',', 'one', 'two', 'three'))) STORED;
但是结果没有给出与 Mariadb 生成的哈希相同的哈希。 为什么我没有得到相同的结果?
附注 我还将该列转换为使用 UTF8 字符集。
我没有看到 Python 和 MariaDB 之间有什么区别。在Python中:
>>> import hashlib
>>> print(hashlib.sha1(','.join(['one', 'two', 'three']).encode()).hexdigest())
0b44bcad5f54f1ac373269c523c52f4d428a7dce
在 MariaDB 中:
MariaDB [example]> select sha(concat_ws(',', 'one', 'two', 'three'));
+--------------------------------------------+
| sha(concat_ws(',', 'one', 'two', 'three')) |
+--------------------------------------------+
| 0b44bcad5f54f1ac373269c523c52f4d428a7dce |
+--------------------------------------------+
1 row in set (0.000 sec)
两种实现都返回相同的哈希值。
如果您看到不同的行为,请更新您的问题以包含完整的最小、可重现的示例——我们可以在本地运行以重现您所看到的行为的代码。