密码技术密码杂凑算法学习笔记

笔记

SM3值计算方法与公式解析
第三,关于ABC的SM3值怎么计算呢?首先,我们需要了解计算的方法。AB和BC的范围是4243,转换成名值为4,这就是总共多少钱。学习到位后,每个字符是8位学分,白经的全部方案是24,而不是3。ABC的长度不是3,而是24。
接下来,我们来看AB和BC的二码。在财务流中,首先填入一个1,后面填上一串0。这里多了一个1,后面又多了一块0。这是怎么来的呢?因为最终设备的程度决定了全部的方案。ABC的长度是24公分,用20个角计算是多少?24等于20年二等奖。再看这个值:1842、1016、10112。前面几位是1,后面是19个0。这样计算出来后,长度L的表示就明确了。测量时,AB和BC的长度是24位,而不是3位。在人间传说中,A的长度是204位,满了之后再后续补充到24位。
为什么这个地方的长度是48呢?在5月20号,我们的交易全州范围是512位。因为单次交易的长度是136位,所以剩下的部分需要处理。那么这个K怎么算呢?比如说左侧的A加了一个1,后面再加一个0。这里的值是24加1等于25,512+64-25,结果是4。前面是社会部分,加了一个1,再加一个1。为什么连着呢?因为512减去64,再减去25,结果是423元。如果数据量比较大怎么办?前面是512位的背部,内部部分不管,只需填充最后一段即可。如果有问题,可以随时提问。
假如下节课考核,你需要对名字进行填充。比如说一个房间住4个人,需要N个人,如何计算需要几个房间?这可以通过公式:N+X-1÷M。后续我们会有8位一组、256位一组、512位一组的计算方法。比如8位一组,分成多少组?加7再乘以8即可。公式记录下来后,按算法流程进行计算即可。
关于SM3值的计算,这些内容教材上都有详细说明。教材中还有代码示例,可以通过GDP单独运行,将资源代码调试到标准接口中。通过验证命令行,计算结果与标准一致即可。如果代码不一致,需要进行调整。明天的课程会涉及代码展示和修改,请大家提前准备。
循环。问题是什么样?问题是我们对一个后天的东西进行计算,计算它的差距值。在这里,我们可能还不知道它具体有什么用。本身的一些数据我们还无法获取,这时候该怎么办呢?所以实际上,我们有时候会采用三段式的方法。
首先,这里我们提到的O12是什么?我们是三四啊,基本上都是在有一个1亿的操作。除了化还干什么呢?我们可以使用EFG这八个方法,然后在里面进行更新(update)。第三步是沟通,因为有时候输出的数据不是连贯的,我就不知道最后一条数据是怎么回事。最后发现,这里面需要监管输出。
按照规范文档,我们是交易金喷组,需要配消息。我们的三段式实现的意思是,中间的这些东西我们不用管。最后一次,我们拍摄照片交易大奖,才能够生成学术成果。这是在工作中实现的,大家可以了解一下。
这里我们提到的SM33,它也是三段式的,大家可以看一下代码。再写一遍,包含我们后面要学习的18标准。这个18标准中,咱们国家的大监管机制也是三个字的。现在所有的密码和密码箱、密码机等都遵循三个字的原则:首先是1,然后是更新(update),最后是完成(finish)。
此外,国家的F计算使用的是带碳太阳酸的算法。在前面的预算中,我们使用了H、start、update、8这几个步骤进行预算。这是一个特试单,特试的熟练度大家可以参考一下。
标准文档的链接已经发上来了,代码也给你们了。大家可以把代码拷贝一下,运行结果贴到指定位置提交就可以了。后面大家通过这两个月的学习,应该能够掌握相关内容。

理解不好的地方及总结

填充”的真正目的与规则
理解不清的地方:对填充的具体位数(如48)和计算过程感到困惑。
补充解析:填充是为了让所有消息都有统一的“结构”(512位的倍数),确保算法能安全、无歧义地处理所有长度的输入。最后64位存放原始长度,是为了防止“长度扩展攻击”。
简化公式:如果需要填充的原始数据长度为 L 位。
第一步:先补一个1,此时长度变为 L+1。
第二步:补 K 个 0,K 是满足 (L + 1 + K) ≡ 448 (mod 512) 的最小非负整数。
第三步:最后64位,填入 L 的二进制表示。

“房间”比喻的数学原理
理解不清的地方:N+X-1÷M 这个公式。
补充解析:这个比喻非常形象,目的是计算需要多少个512位的“房间”。
N:原始数据的位数。
M:每个“房间”的容量,这里是512位。
公式应为:分组数 = (N + 填充位长度) / M。
填充位长度至少是65位(1个1 + 64位长度表示),最多是512+65位。所以更通用的计算分组数的方法是:分组数 = ceil((N + 1 + 64) / 512),ceil是向上取整。你原文中的公式可能是这个思想的另一种表达。

“三段式”的工程价值
理解不清的地方:为什么“中间的这些东西我们不用管”?
补充解析:这是为了处理流式数据。不需要一次性拥有全部数据再计算。可以来一部分数据,就 update 一部分。算法内部会维护中间状态,直到调用 finish 才输出最终结果。这对于计算大文件或网络数据流的哈希值至关重要。

SM3与“国密算法”
SM3是我国国家密码管理局发布的商用密码哈希算法,用于替代SHA-256等国际算法。
提到的“国家的F计算使用的是带碳太阳酸的算法”,这里的“带碳”很可能是带进位,“太阳酸”可能是压缩函数的误读或口误。SM3的压缩函数设计确实复杂,涉及位运算和模运算。

我的学习贡献

抓住了核心概念:准确地识别出了SM3计算中的两个最关键部分——数据填充和三段式计算流程。

建立了逻辑联系:将抽象的填充规则与形象的“房间”比喻联系起来,这有助于形成直观理解。

识别了关键术语:注意到了 update, finish, EFG(可能指寄存器或中间变量)等核心函数和概念,这是理解算法实现的基础。

明确了实践路径:认识到可以通过阅读标准文档和调试示例代码来验证和理解算法,这是最有效的学习方法。

构建了知识框架:为深入学习和明天课程中的代码实践打下了一个坚实的基础,知道了重点和难点在哪里。

编译运行相关代码

image

posted @ 2025-09-30 09:37  田泽航  阅读(5)  评论(0)    收藏  举报