gpt4 book ai didi

MySQL SHA2 函数似乎不起作用

转载 作者:可可西里 更新时间:2023-11-01 07:47:10 25 4
gpt4 key购买 nike

我正在使用 MySql 5.5.32 并尝试在业务层的存储过程中重现一些代码,以便我可以为使用 sql 的人设置密码。虽然 SHA2 函数似乎有问题,但也许我遗漏了一些东西:

SELECT length(SHA2("bob", 512))

返回128,不应该是64吗?

SELECT length(SHA2("bob", 256))

它返回 64,所以看起来要么是我遗漏了什么,要么是 SHA2 中存在错误。有什么想法吗?

最佳答案

我编码了 patch for the SHA2() function in 2005并将其贡献给 MySQL(开发人员随后对我的代码进行了一些编辑以符合他们的编码标准)。

该函数总是返回一串十六进制数字,就像 MySQL 中的所有其他哈希函数一样。

您可能正在阅读文档中的这个声明:

As of MySQL 5.5.6, the return value is a nonbinary string in the connection character set. Before 5.5.6, the return value is a binary string.

我可以理解读者会如何认为这意味着它返回二进制字节,但这是一种误解。

这实际上意味着该字符串具有二进制字符集。它仍然是十六进制数字的明文字符串。事实上,MySQL 中的散列函数都没有像在其上运行 UNHEX() 那样返回字节串,它们都返回十六进制数字串。一串十六进制数字的长度是等效二进制字节长度的两倍。

如果您不知道我指的是二进制字符集,请参阅 What is binary character set?

SHA2() 是 changed to use the connection character set在 5.5.6 中,而其他哈希函数在 5.5.3 中以相同的方式进行了更改。

关于MySQL SHA2 函数似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com