论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
「密码学」哈希为什么要将盐加在明文后面? ...
「密码学」哈希为什么要将盐加在明文后面?
南七星之家
金牌会员
|
2023-3-10 18:01:07
|
显示全部楼层
|
阅读模式
楼主
主题
891
|
帖子
891
|
积分
2675
众所周知,在做消息认证或者签名时,仅使用hash函数安全性是不高的,容易遭受字典和暴力破解(
https://www.cmd5.com/
)。所以通常会使用带密钥或加盐的哈希算法作为消息认证或者口令存储,正如标题所说,我们在检索互联网上关于加盐的实现时,内容往往都是在明文
后面
加上随机值:
那做消息认证的密钥或者盐可不可以加在明文前面呢?
这就引出本文的攻击方式。
MD5 算法计算逻辑
为了清楚这个攻击方式原理,需要先了解下md5的计算逻辑。
md5算法本质上是一种压缩算法,将长度小于2^64bit的任意字符压缩成128bit固定长度字符。同AES之类的分组加密算法一样,md5也需要进行分组计算。
如图所示,md5的计算需要经过两个步骤:
分组&填充
具体计算
1.分组&填充
首先会对明文按照512bit的长度进行分组,最后一个分组可能会发生长度不足512bit,或者刚刚512bit。
无论最后一个分组的长度是否刚好等于512bit,按照填充规则都需要进行填充,具体细节:
假设明文刚好能被512整除,需要新增一个分组,在末尾8*8=64bit 按照小端存储放入原始明文的长度,分组中间剩余的bit 按照10000000的方式进行填充,形成一个总长512bit的新分组。
假设整除512bit余数大于0
且余数大于512-8*8 =448 bit 则需要继续填充10000(0x80000.....)至下一个分组的448bit,剩余的bit按照小端存储填充原始明文长度
余数小于448bit,末尾填充原始明文长度,中间剩余部分填充填充10000(0x80000.....)
以上两个步骤用代码表示即为:
[code] m_l = len(message) # 原始消息长度 length = struct.pack('
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
南七星之家
金牌会员
这个人很懒什么都没写!
楼主热帖
详讲Java开发中的六个常用API(Math,S ...
MySQL并行复制(MTS)原理(完整版) ...
【K8S】K8S入门基础知识
软件项目管理 3.5.敏捷生存期模型 ...
java中Collections.addAll方法具有什么 ...
鸿蒙到底是不是安卓?
云原生之 Docker篇 Docker Stack介绍及 ...
postman结合newman生成测试报告 ...
python中的字典和集合
BOS EDI 项目 Excel 方案开源介绍 ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表