MySQL密码加密技术:SHA1简介(mysqlsha1)

MySQL的密码加密技术SHA1,它是安全散列算法的缩写,它也被称为消息摘要或散列函数算法。它是单向加密(不可逆),可以把任意长度的字符串映射成一个 160-位散列值。它的加密结果是一个32位的十六进制数字。

在MySQl中,使用SHA1作为用户的账号密码加密算法,常用的验证模块来源有两个:一种是MySQL native 的authentication_ldap,另一种是sh1加密实现模块authentication_keyring。

首先,我们看一下MySQL native的authentication_ldap的代码,它使用的是SHA1的加密算法:

“` mysql

CREATE FUNCTION sha1(input CHAR(64))

BEGIN

DECLARE output CHAR(16);

SET output = SHA1(input);

RETURN output;

END


此代码使用SHA1函数来计算输入数据的散列值,参数input为64个字节的有符号字符;输出output为16位有符号字符,即SHA1摘要结果。

另外,MySQL采用authentication_keyring来实现SHA1消息摘要的加密算法:

``` mysql
CREATE OR REPLACE FUNCTION sha1_keyring(
input VARBINARY(64),
key VARBINARY(32)
) RETURNS VARBINARY(20)
BEGIN
DECLARE output VARBINARY(20);
SET output = sha1_keyring( input, key );
RETURN output;
END

本函数使用keyring实现SHA1加密算法,参数input为64个字节的可变长度数据,key为32个字节的可变长度密钥,输出output为20个字节的散列值。

从上面的代码可以看出MySQL通过两种不同的方式来实现SHA1加密算法,一种是MySQL native authentication_ldap,另一种是keyring authentication_keyring。这两种方法都可以用来安全地存储用户的账号密码,但要根据实际的情况来选择合适的加密算法。


数据运维技术 » MySQL密码加密技术:SHA1简介(mysqlsha1)