从零学习 CA 系列 (六) -- 常见摘要算法分析

简介: 本文参考《PKI/CA 与数字证书技术大全》书籍,如有理解bug, 请大家指正。MD5MD5 是 MD4 的改进版,以512位分组来处理输入的信息,产生128位散列值。

本文参考《PKI/CA 与数字证书技术大全》书籍,如有理解bug, 请大家指正。

MD5

MD5 是 MD4 的改进版,以512位分组来处理输入的信息,产生128位散列值。
MD5 算法的计算过程主要包括以下步骤:

(1) 预填充

首先,对信息进行填充,使其位长对 512 求余的结果等于 448, 即信息的位长(Bits Length) 被扩展至 N x 512 + 448 或 N x 64 + 54 个字节(N 为一个正整数)。填充的方法为:在信息的后面填充一个1和多个0,直到满足上面的条件。然后,再附加一个64位二进制表示的填充前信息长度。经过这两步处理,使消息长度恰好是512位的整数倍。

(2) 主循环

主循环的次数为信息中512位分组的数目。MD5 中需要4个32位的链接变量: A = 0x01234567, B = 0x89abcdef, C = 0xfedcba98, D = 0x76543210。
每个主循环有4轮(MD4 只有 3 轮), 每轮循环都很相似, 每轮16次操作。在 主循环开始前,先将 4 个链接变量复制到另外4个变量中:A到a, B到b,C到c, D到d。第一轮进行16次操作。每次操作对 a,b,c,d其中3个进行一次非线性函数运算,然后将所得结果加上第4个变量、512位分组数据和一个常数。在将所得结果向右环移一个不定的数,并加上 a, b, c, 或 d 中的一个。最后用该结果取代 a, b, c,或 d 中之一。
每个主循环完成以后,将 A、B、C、D分别加上 a、b、c、d,然后用下一个512位分组数据继续进行主循环运算,直到所有分组都完成主循环运算。

(3) 输出处理

将最后一个主循环生成的 A、B、C、D这四个32位值进行级联,生成一个128位的摘要值。

SHA1

SHA1 是以 512 位分组来处理输入信息,产生 160 位散列值。
SHA1 算法计算过程与 MD5 类似,主要包括如下步骤。

(1) 预填充

填充方法与 MD5 完全一致。

(2) 主循环

主循环的次数为信息中512位分组的数目。SHA1 中需要5个32位的链接变量: A = 0x67452301, B = 0xefcdab89, C = 0x98badcfe, D = 0x10325476, E = 0xc3d2e1f0。
每个主循环有4轮, 每轮20次操作。在 主循环开始前,先将 5 个链接变量复制到另外5个变量中:A到a, B到b,C到c, D到d, E到e。每次操作对 a, b, c, d, e其中3个进行一次非线性函数运算,然后进行与 MD5 中类似的移位运算和加运算。
每个主循环完成以后,将 A、B、C、D、E分别加上 a、b、c、d、e,然后用下一个512位分组数据继续进行主循环运算,直到所有分组都完成主循环运算。

(3) 输出处理

将最后一个主循环生成的 A、B、C、D、E这5个32位值进行级联,生成一个160位的摘要值。

SM3

SM3 算法是由中国国家密码管理局于2012年12月17日发布的摘要算法,主要满足电子认证服务系统等应用需求。
针对长度为 l(l < 2 ^ 64)比特的消息m,SM3 算法经过填充和迭代压缩,生成杂凑值,杂凑值长度为256位。其中填充过程为:假设消息m的长度为l位。首先将位“1”添加到消息的尾未,再添加k个“0”,k 是满足 l + 1 + k = 448 mod 512 的最小的非负整数;然后在添加一个 64 位的比特串,该比特串是长度 l 的二进制表示;填充后的消息 m' 的比特长度为 512 的倍数。

目录
相关文章
|
25天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR
阿里云人工智能平台 PAI 与复旦大学王鹏教授团队合作,在自然语言处理顶级会议 EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。
|
25天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
25天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
25天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
25天前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
25天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
25天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
|
25天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构的基本概念;算法的基本概念、特性以及时间复杂度、空间复杂度等举例说明;【含常见的报错问题及其对应的解决方法】
|
25天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之王道第2.3章节之线性表精题汇总二(5)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
IKU达人之数据结构与算法系列学习×单双链表精题详解、数据结构、C++、排序算法、java 、动态规划 你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
下一篇
无影云桌面