如何在Python3中创建与Maraidb sha1哈希相同的sha1哈希?

问题描述 投票:0回答:1

我正在尝试创建与 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-3.x sha1 pymysql mariadb-10.6
1个回答
0
投票

我没有看到 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)

两种实现都返回相同的哈希值。

如果您看到不同的行为,请更新您的问题以包含完整的最小、可重现的示例——我们可以在本地运行以重现您所看到的行为的代码。

© www.soinside.com 2019 - 2024. All rights reserved.