mysql sha512_MySQL SHA2功能似乎不起作用

我正在使用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()一样,它们都返回十六进制数字的字符串.十六进制数字字符串的长度是等效二进制字节长度的两倍.

标签:mysql,sha2

来源: https://codeday.me/bug/20190715/1467392.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值