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消息摘要的加密算法:
``` mysqlCREATE 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。这两种方法都可以用来安全地存储用户的账号密码,但要根据实际的情况来选择合适的加密算法。