首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
「密码学」哈希为什么要将盐加在明文后面? ...
返回列表
发新帖
「密码学」哈希为什么要将盐加在明文后面?
[复制链接]
发表于 2023-3-10 18:01:07
|
显示全部楼层
|
阅读模式
众所周知,在做消息认证或者签名时,仅使用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('
继续阅读请点击广告
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
南七星之家
+ 我要发帖
×
登录参与点评抽奖,加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表