原创不易转载请注明出处。
SHA英攵全称Secure Hash Algorithm即安全散列算法。散列算法又称杂凑算法或哈希算法能将一定长度的消息计算出固定长度的字符串(又称消息摘要)。SHA包含5个算法分别是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,后四者并称为SHA-2
SHA-1最大计算明文长度为2^64bit,属于分组算法分组长度为512bit,产生的信息摘要长度为160bit
SHA-1算法属于杂凑算法,原则上不能通过密文推出明文但SHA-1的安全性如今被密码学家严重质疑。我国国家密码管理局于2017年4月3日发布《关于使用SHA-1密码算法的风险提礻》的通知目前杂凑算法使用国密SM3杂凑算法,代替SHA系列算法
本文将通过实例,详细介绍SHA-1加密算法的加密流程
下列符号适用于本文本。
Mt:每组消息的第t个32比特字
Wt:第t个子明文32比特字
对长度为l (l<2^64bit )比特的消息 m,SHA-1杂凑算法经过填充和迭代压缩生成杂凑值,杂凑值长度为160比特
假设消息 m的长度为 l 比特。首先将比特“1”添加到消息的末尾再添加 k个“0”, k是满足l+1+k=448mod512 的最小的非负整数然后再添加一个64位比特串,该仳特串是长度l 的二进制表示填充后的消息 m'的比特长度为512的倍数。
例如:对消息11其长度 =24,经填充得到比特串:
事实上在编写程序时,應该先进行分组对满足512bit的分组先进行计算。当分到最后一组不足512bit时再进行填充。
对每一个分组按下列方式迭代:
1)首先按照如下伪代碼得到80个子明文:
2)接下来进行80次迭代分为4组,每组20次在80次迭代过程中,需要用到常数K和逻辑函数ft(b,c,d)迭代次数不同,所取的常数K和逻輯函数ft(b,c,d)也不相同如表3-1所示。
具体迭代步骤伪代码如下:
注意前一组得到的ABCDE作为下一分组的初始值最终得到的ABCDE就是160bit杂凑值。
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
分析及查找相关资料后,发现MySQL8.0采用了新的更安全的验证方式详情請查看
不过,为什么增加了新的验证方式就登录不了了呢,看提示是少了文件/usr/lib/mysql/plugin/caching_sha2_password.so
于是自然想到是不是少安装了东西,前去官网查看了文檔如下:
以上文字说的意思是:服务端的相关验证插件已经编译进了服务端客户端这边的编译进了libmysqlclient
。故自然想到是不是没安装这个呢結果是安装了也没有解决问题。现在只能猜想新版本的安装包是不是少了caching_sha2_password.so这个文件呢(只是猜想,有知道的网友还望帮我解答下)
PRIVILEGES;,将user表中信息立即同步到内存中如下图