当前位置: 首页 > news >正文

专用杂凑函数的消息鉴别码算法学习记录

声明

本文是学习github5.com 网站的报告而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们

范围

GB/T 15852的本部分规定了三种采用专用杂凑函数的消息鉴别码算法。这些消息鉴别码算法可用作数据完整性检验,检验数据是否被非授权地改变。同样这些消息鉴别码算法也可用作消息鉴别,保证消息源的合法性。数据完整性和消息鉴别的强度依赖于密钥的长度及其保密性、杂凑函数的算法强度及其输出长度、消息鉴别码的长度和具体的消息鉴别码算法。

本部分适用于任何安全体系结构、进程或应用的安全服务。

规范性引用文件

下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

GB/T 18238.3-2002 信息技术 安全技术 散列函数
第3部分:专用散列函数(idt ISO/IEC 10118-3: 1998)

GB/T 1988-1998 信息技术 信息交换用七位编码字符集 (eqv ISO/IEC
646:1991)

ISO/IEC 10118-3:2004 信息技术 安全技术 杂凑函数 第3部分:专用杂凑函数

术语和定义

下列术语和定义适用于本部分。

消息鉴别码 message authentication code MAC

利用对称密码技术,以密钥为参数,由消息导出的数据项。任何持有这一密钥的实体,都可利用消息鉴别码检查消息的完整性和始发者。

消息鉴别码(MAC)算法密钥 MAC algorithm key

一种用于控制消息鉴别码算法运算的密钥。

消息鉴别码算法 Message Authentication Code algorithm

消息鉴别码算法简称MAC算法,其输入为密钥和消息,输出为一个固定长度的比特串,满足下面两个性质:

- 对于任何密钥和消息,MAC算法都能够快速地计算。

-
对于任何固定的密钥,攻击者在没有获得密钥信息的情况下,即使获得了一些(消息,MAC)对,对任何新的消息预测其MAC在计算上是不可行的。

  1. 一个MAC算法有时被称作一个密码校验函数。计算不可行性依赖于使用者具体的安全要求及其环境。

输出变换 output transformation

应用在算法中,对迭代操作的输出所进行的变换。

抗碰撞杂凑函数 collision-resistant hash-function

满足如下性质的杂凑函数:

- 寻找两个不同的输入,使得它们的输出相同,在计算上是不可行的。

消息比特串(数据) data string(data)

杂凑函数的输入比特串。

杂凑值 hash-code

杂凑函数的输出比特串。

杂凑函数 hash-function

将任意长消息比特串映射到定长比特串的函数,并且满足如下两个性质:

对于任何输出,找到它所对应的输入在计算上是不可行的。

对于任何输入,找到区别于它且和它具有相同输出的输入在计算上是不可行的。

初始值 initializing value

杂凑函数开始工作时用到的值。

填充 padding

在消息比特串后面附加额外比特串的操作。

分组 block

一种定义了长度的比特串。

轮函数 round-function

将两个长度为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T6t3z2ad-1692860510113)(https://ab.github5.com/media_word_markdown/458960/media/image3.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CpQ4MeQ2-1692860510114)(https://ab.github5.com/media_word_markdown/458960/media/image4.png)]的比特串映射到一个长度为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-30yVPwzn-1692860510114)(https://ab.github5.com/media_word_markdown/458960/media/image5.png)]的比特串的函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vtWVW1Gs-1692860510115)(https://ab.github5.com/media_word_markdown/458960/media/image6.png)]。

  1. 它被反复地用在杂凑函数中,将长度为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8fA8kQPE-1692860510116)(https://ab.github5.com/media_word_markdown/458960/media/image7.png)]的比特串和前面长度为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iUSTDLZT-1692860510117)(https://ab.github5.com/media_word_markdown/458960/media/image8.png)]的输出值相合并。

字 word

长度为32位的比特串。

符号和记法

下列符号和记法适用于本部分。

  1. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vknof9Z0-1692860510118)(https://ab.github5.com/media_word_markdown/458960/media/image9.png)]只能被用来处理长度为整数倍的输入比特串。

要求

采用本部分MAC算法的使用者应当选择:

1)从章节6、7、8中选取一种MAC算法;

2)从GB/T 18238.3-2002中的专用杂凑函数1、2、3或ISO/IEC
10118-3:2004中的专用杂凑函数7中选取一个杂凑函数;

3)MAC的长度

对于MAC算法1和2,MAC的长度应该是一个正整数并且不大于杂凑值长度。对于MAC算法3,MAC的长度m应该是一个正整数并且不大于杂凑值长度的二分之一,即

对于MAC算法1和2,消息比特串的比特长度不大于;对于MAC算法3,消息比特串的比特长度不大于256。

对一个具体MAC算法、专用杂凑函数、值的选择超出了本部分所规定的范围。

  1. 上述选择将影响MAC算法的安全强度,具体请参考附录B。

生成MAC和验证MAC应当使用同样的密钥。

MAC算法 1

MAC算法 1计算MAC值要求调用一次杂凑函数,而且要求修改其中的轮函数常数。

杂凑函数应当从GB/T 18238.3-2002中的专用杂凑函数1、2、3或ISO/IEC
10118-3:2004中的专用杂凑函数7中选取。

密钥长度不大于128比特。

  1. 本条款包括MDx-MAC的描述【5】。具体来讲,若采用专用杂凑函数
    1,MAC算法 1也被称作RIPEMD-160-MAC;若采用专用杂凑函数 2,MAC算法
    1也被称作RIPEMD-128-MAC;若采用专用杂凑函数 3,MAC算法
    1也被称作SHA-1-MAC;若采用专用杂凑函数 4(即ISO/IEC
    10118-3:2004中的专用杂凑函数7),MAC算法 1也被称作WHIRLPOOL-MAC。

MAC算法 1的描述

MAC算法
1要求如下五步操作:密钥扩展、修改常数和初始值、杂凑操作、输出变换和截断操作。

密钥扩展

若[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R39dPw7A-1692860510129)(https://ab.github5.com/media_word_markdown/458960/media/image20.png)]长度小于128比特,那么将[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-idc445JM-1692860510130)(https://ab.github5.com/media_word_markdown/458960/media/image21.png)]重复足够多次数,从连接起来的比特串中选取最左边128比特作为128比特密钥[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m4QytxhP-1692860510130)(https://ab.github5.com/media_word_markdown/458960/media/image22.png)](若[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jCZGz9d4-1692860510131)(https://ab.github5.com/media_word_markdown/458960/media/image23.png)]的长度恰好为128比特,则[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZhnLEttK-1692860510131)(https://ab.github5.com/media_word_markdown/458960/media/image24.png)]),即:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BmN11M3T-1692860510132)(https://ab.github5.com/media_word_markdown/458960/media/image25.png)]

按照如下操作计算子密钥[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cshzaMz6-1692860510132)(https://ab.github5.com/media_word_markdown/458960/media/image26.png)]、[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NNwAYymL-1692860510132)(https://ab.github5.com/media_word_markdown/458960/media/image27.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-utXF9MrH-1692860510133)(https://ab.github5.com/media_word_markdown/458960/media/image28.png)]:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ywQPcTp1-1692860510133)(https://ab.github5.com/media_word_markdown/458960/media/image29.png)]

其中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O87K2OPr-1692860510133)(https://ab.github5.com/media_word_markdown/458960/media/image30.png)]、[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rmn4cbNn-1692860510134)(https://ab.github5.com/media_word_markdown/458960/media/image31.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AjzSShmV-1692860510134)(https://ab.github5.com/media_word_markdown/458960/media/image32.png)]是768比特的常数,在条款9中有定义。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jodpZixH-1692860510134)(https://ab.github5.com/media_word_markdown/458960/media/image33.png)]表示简化的杂凑函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xXYL8Rbx-1692860510135)(https://ab.github5.com/media_word_markdown/458960/media/image34.png)],即没有数据填充和长度附加。

  1. 数据填充和长度附加可以被省略,是因为在这里输入比特串的长度总是[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pO7XYgUy-1692860510135)(https://ab.github5.com/media_word_markdown/458960/media/image35.png)]比特。

导出的密钥[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H5qv0f72-1692860510135)(https://ab.github5.com/media_word_markdown/458960/media/image36.png)]被分割成四个字,表示为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dl0G9AUw-1692860510136)(https://ab.github5.com/media_word_markdown/458960/media/image37.png)],即:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TO0AJXYW-1692860510136)(https://ab.github5.com/media_word_markdown/458960/media/image38.png)]。

从比特串到字的转换,需要规定字节的排列顺序。在这里的转换中,采用GB/T
18238.3-2002中对所有专用杂凑函数规定的字节排列顺序。

修改常数和初始值

轮函数中采用的附加常数,被修改为它与[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bljADeGG-1692860510136)(https://ab.github5.com/media_word_markdown/458960/media/image39.png)]四个字中的一个进行模[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-51er2QRm-1692860510137)(https://ab.github5.com/media_word_markdown/458960/media/image40.png)]加的结果,比如说:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nhMhc8Oe-1692860510137)(https://ab.github5.com/media_word_markdown/458960/media/image41.png)]

在条款9中具体规定了[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tCMieEao-1692860510137)(https://ab.github5.com/media_word_markdown/458960/media/image42.png)]中的哪个字与哪个常数相加。用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GReJdqw5-1692860510138)(https://ab.github5.com/media_word_markdown/458960/media/image43.png)]取代杂凑函数的初始值[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1UyGBkli-1692860510138)(https://ab.github5.com/media_word_markdown/458960/media/image44.png)],所得的杂凑函数记作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JScSQkNB-1692860510139)(https://ab.github5.com/media_word_markdown/458960/media/image45.png)],其中的轮函数记作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kB3fx6fD-1692860510139)(https://ab.github5.com/media_word_markdown/458960/media/image46.png)]。

杂凑操作

用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8QOJSw4b-1692860510139)(https://ab.github5.com/media_word_markdown/458960/media/image47.png)]表示输入到被修改的杂凑函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DMhcgB5u-1692860510140)(https://ab.github5.com/media_word_markdown/458960/media/image48.png)]中的比特串,即:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EK5cpBm6-1692860510140)(https://ab.github5.com/media_word_markdown/458960/media/image49.png)]

输出变换

再一次应用被修改的轮函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U7qJ43WS-1692860510140)(https://ab.github5.com/media_word_markdown/458960/media/image50.png)],其中输入的第一个参数为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mSyc6jcC-1692860510141)(https://ab.github5.com/media_word_markdown/458960/media/image51.png)],第二个参数为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uMG8pLBn-1692860510141)(https://ab.github5.com/media_word_markdown/458960/media/image52.png)](杂凑操作的结果),即:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dl4b05aX-1692860510141)(https://ab.github5.com/media_word_markdown/458960/media/image53.png)],

这里[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zPTVP66e-1692860510142)(https://ab.github5.com/media_word_markdown/458960/media/image54.png)]、[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MYRJvKL7-1692860510142)(https://ab.github5.com/media_word_markdown/458960/media/image55.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZGMmpsNu-1692860510142)(https://ab.github5.com/media_word_markdown/458960/media/image56.png)]都是长度为128的比特串,在条款9中对所有专用杂凑函数均有定义。

  1. 输出变换对应于处理一个额外的数据分组,这个额外的数据分组是在数据填充和长度附加操作之后,由[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXRbbhsL-1692860510143)(https://ab.github5.com/media_word_markdown/458960/media/image57.png)]导出。

截断操作

取比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4YX8Z8Gz-1692860510143)(https://ab.github5.com/media_word_markdown/458960/media/image58.png)]最左边[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T3nJ4h9W-1692860510143)(https://ab.github5.com/media_word_markdown/458960/media/image59.png)]比特,作为MAC值,即:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qfMBIelG-1692860510144)(https://ab.github5.com/media_word_markdown/458960/media/image60.png)]

MAC算法 1的效率

假定填充后的消息比特串包括[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sjnpo09P-1692860510144)(https://ab.github5.com/media_word_markdown/458960/media/image61.png)]个分组(这里填充方法由具体的杂凑函数决定),那么MAC算法
1调用轮函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W5Bf4D0H-1692860510144)(https://ab.github5.com/media_word_markdown/458960/media/image62.png)]次。

通过预计算[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-urK7clAl-1692860510145)(https://ab.github5.com/media_word_markdown/458960/media/image63.png)]、[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EPB3Jupm-1692860510145)(https://ab.github5.com/media_word_markdown/458960/media/image64.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qnF9ruCY-1692860510146)(https://ab.github5.com/media_word_markdown/458960/media/image65.png)],并且在杂凑函数的应用中用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ric8YlgF-1692860510146)(https://ab.github5.com/media_word_markdown/458960/media/image66.png)]取代[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qSWtcwxo-1692860510146)(https://ab.github5.com/media_word_markdown/458960/media/image67.png)],MAC算法
1调用轮函数的次数可以降低到[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UwRbKzj0-1692860510147)(https://ab.github5.com/media_word_markdown/458960/media/image68.png)]次。

处理长的消息比特串时,MAC算法 1和相应杂凑函数的性能相当。

MAC算法 2

MAC算法 2计算MAC值要求调用两次杂凑函数。

杂凑函数应当从GB/T 18238.3-2002中的专用杂凑函数1、2、3或ISO/IEC
10118-3:2004中的专用杂凑函数7中选取,并且要求[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x59DO5tg-1692860510147)(https://ab.github5.com/media_word_markdown/458960/media/image69.png)]是8的正整数倍,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b7HO8ECC-1692860510147)(https://ab.github5.com/media_word_markdown/458960/media/image70.png)]。

  1. GB/T 18238.3-2002中的杂凑函数1、2、3和ISO/IEC
    10118-3:2004中的杂凑函数7满足这些条件。

密钥长度[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YqiHcF1q-1692860510148)(https://ab.github5.com/media_word_markdown/458960/media/image71.png)]不小于[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6EZjd8wj-1692860510148)(https://ab.github5.com/media_word_markdown/458960/media/image72.png)]比特([外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UpgPHWR1-1692860510149)(https://ab.github5.com/media_word_markdown/458960/media/image73.png)]是杂凑值的比特长度),不大于[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CVUcW4n8-1692860510149)(https://ab.github5.com/media_word_markdown/458960/media/image74.png)]比特([外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hhONzdEp-1692860510150)(https://ab.github5.com/media_word_markdown/458960/media/image75.png)]为输入到轮函数的比特串的比特长度),即:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m87Kse25-1692860510150)(https://ab.github5.com/media_word_markdown/458960/media/image76.png)]。

MAC算法 2的描述

MAC算法 2要求如下四步操作:密钥扩展、杂凑操作、输出变换和截断操作。

密钥扩展

在密钥[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lwxjfavl-1692860510151)(https://ab.github5.com/media_word_markdown/458960/media/image77.png)]的右侧填充[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HUm2kkFb-1692860510151)(https://ab.github5.com/media_word_markdown/458960/media/image78.png)]个0,所得的长度为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tYS2xoCy-1692860510152)(https://ab.github5.com/media_word_markdown/458960/media/image79.png)]的比特串记作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-asR9kjLm-1692860510152)(https://ab.github5.com/media_word_markdown/458960/media/image80.png)]。

按照如下的方法,将[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNq3FpOv-1692860510153)(https://ab.github5.com/media_word_markdown/458960/media/image81.png)]扩展为两个子密钥[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oj4WZt7g-1692860510154)(https://ab.github5.com/media_word_markdown/458960/media/image82.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6h6v3mSy-1692860510154)(https://ab.github5.com/media_word_markdown/458960/media/image83.png)]:

·将16进制的值"36"(二进制表示为"00110110")重复[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EiVgvzjq-1692860510154)(https://ab.github5.com/media_word_markdown/458960/media/image84.png)]次连接起来,所得比特串记作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cPYmLHEh-1692860510157)(https://ab.github5.com/media_word_markdown/458960/media/image85.png)]。然后将[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nqXIk3kU-1692860510157)(https://ab.github5.com/media_word_markdown/458960/media/image86.png)]和比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-osXQ2qAU-1692860510157)(https://ab.github5.com/media_word_markdown/458960/media/image87.png)]相异或,记作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8gygFeLA-1692860510158)(https://ab.github5.com/media_word_markdown/458960/media/image88.png)]。即:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pnertolZ-1692860510158)(https://ab.github5.com/media_word_markdown/458960/media/image89.png)]。

·将16进制的值"5C"(二进制表示为"01011100")重复[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2RQXRVL0-1692860510158)(https://ab.github5.com/media_word_markdown/458960/media/image90.png)]次连接起来,所得比特串记作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aZKLoHZC-1692860510159)(https://ab.github5.com/media_word_markdown/458960/media/image91.png)]。然后将[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f2nAvoUu-1692860510159)(https://ab.github5.com/media_word_markdown/458960/media/image92.png)]和比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BXSjfLGa-1692860510159)(https://ab.github5.com/media_word_markdown/458960/media/image93.png)]相异或,记作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pwB32zS8-1692860510160)(https://ab.github5.com/media_word_markdown/458960/media/image94.png)]。即:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PyaEvrOo-1692860510160)(https://ab.github5.com/media_word_markdown/458960/media/image95.png)]。

杂凑操作

将[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9cdCUHmX-1692860510160)(https://ab.github5.com/media_word_markdown/458960/media/image96.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ojwPNSBU-1692860510161)(https://ab.github5.com/media_word_markdown/458960/media/image97.png)]相连接,作为输入到杂凑函数的比特串,即:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IM1S52Th-1692860510161)(https://ab.github5.com/media_word_markdown/458960/media/image98.png)]。

输出变换

将[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BRPFHojH-1692860510161)(https://ab.github5.com/media_word_markdown/458960/media/image99.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sfUcEGa6-1692860510162)(https://ab.github5.com/media_word_markdown/458960/media/image100.png)]相连接,作为输入到杂凑函数的比特串,即:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IogxJ2wA-1692860510162)(https://ab.github5.com/media_word_markdown/458960/media/image101.png)]。

截断操作

取比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4VoY2dhd-1692860510163)(https://ab.github5.com/media_word_markdown/458960/media/image102.png)]最左边比特,作为MAC值,即:

siduwenku.com 专注免费分享高质量文档

MAC算法 2的效率

假定填充后的消息比特串包括[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S2bhvsUu-1692860510164)(https://ab.github5.com/media_word_markdown/458960/media/image105.png)]个分组(这里填充方法由具体的杂凑函数决定),那么采用专用杂凑函数
1、2和3时,MAC算法
2调用轮函数次;采用专用杂凑函数
4时,MAC算法
2调用轮函数次。

通过修改杂凑函数代码,MAC算法 2调用轮函数的次数可以降低2次。

使用者可以预计算,并且在第一次调用杂凑函数时用取代,在输出变换中(第二次调用杂凑函数)用取代[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uERFRQF1-1692860510166)(https://ab.github5.com/media_word_markdown/458960/media/image113.png)]。同时,这也要求对填充方法进行修改。事实上,对杂凑函数实际输入的比特长度少了,这样必须把的值加到上。

处理长的消息比特串时,MAC算法 2和相应杂凑函数的性能相当。

MAC算法 3

  1. 本条款包括MAC算法 1的一个变种,对短的输入(不大于256比特)做了优化。

MAC算法
3计算MAC值,要求调用7次简化的轮函数;但是通过预计算,可以降低到调用一次简化的轮函数。

杂凑函数应当从GB/T 18238.3-2002中的专用杂凑函数1、2、3或ISO/IEC
10118-3:2004中的专用杂凑函数7中选取。

密钥长度不大于128比特,MAC值长度不大于比特。

MAC算法 3的描述

MAC算法
3要求如下五步操作:密钥扩展、修改轮函数的常数、数据填充、应用轮函数和截断操作。

密钥扩展

若[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6h6UXL39-1692860510169)(https://ab.github5.com/media_word_markdown/458960/media/image120.png)]长度小于128比特,那么将[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uvi6xSin-1692860510169)(https://ab.github5.com/media_word_markdown/458960/media/image121.png)]重复足够多次数,从连接起来的比特串中选取最左边128比特作为128比特密钥(若[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eJ5gVUlq-1692860510170)(https://ab.github5.com/media_word_markdown/458960/media/image123.png)]的长度恰好为128比特,则),即:

siduwenku.com 专注免费分享高质量文档

按照如下操作计算子密钥[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SygEZsx8-1692860510171)(https://ab.github5.com/media_word_markdown/458960/media/image126.png)]、和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-obqSl4q5-1692860510172)(https://ab.github5.com/media_word_markdown/458960/media/image128.png)]:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AguoNnbz-1692860510173)(https://ab.github5.com/media_word_markdown/458960/media/image129.png)]

其中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DUhWlj71-1692860510173)(https://ab.github5.com/media_word_markdown/458960/media/image130.png)]、[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pUqSVEYC-1692860510173)(https://ab.github5.com/media_word_markdown/458960/media/image131.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GkQVkkc6-1692860510174)(https://ab.github5.com/media_word_markdown/458960/media/image132.png)]是768比特的常数,在条款9中有定义。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nJDVVg5F-1692860510174)(https://ab.github5.com/media_word_markdown/458960/media/image133.png)]表示简化的杂凑函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9B45TAO9-1692860510174)(https://ab.github5.com/media_word_markdown/458960/media/image134.png)],即没有数据填充和长度附加。

  1. 数据填充和长度附加可以被省略,是因为在这里输入比特串的长度总是[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QAokyb5E-1692860510175)(https://ab.github5.com/media_word_markdown/458960/media/image135.png)]比特。

导出的密钥[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XSKNhU6C-1692860510175)(https://ab.github5.com/media_word_markdown/458960/media/image136.png)]被分割成四个字,表示为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UuXHtm28-1692860510175)(https://ab.github5.com/media_word_markdown/458960/media/image137.png)],即:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLfskmBS-1692860510176)(https://ab.github5.com/media_word_markdown/458960/media/image138.png)]。

从比特串到字的转换,需要规定字节的排列顺序。在这里的转换中,采用GB/T
18238.3-2002中对所有专用杂凑函数规定的字节排列顺序。

修改轮函数的常数

轮函数中采用的附加常数,被修改为它与[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k9o4ngyc-1692860510176)(https://ab.github5.com/media_word_markdown/458960/media/image139.png)]四个字中的一个进行模[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QZd8947q-1692860510176)(https://ab.github5.com/media_word_markdown/458960/media/image140.png)]加的结果,比如说:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gaGVddau-1692860510177)(https://ab.github5.com/media_word_markdown/458960/media/image141.png)]

在条款9中具体规定了[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oCryviUS-1692860510177)(https://ab.github5.com/media_word_markdown/458960/media/image142.png)]中的哪个字与哪个常数相加。用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FccfzjBB-1692860510178)(https://ab.github5.com/media_word_markdown/458960/media/image143.png)]取代杂凑函数的初始值[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QwrcrsuT-1692860510178)(https://ab.github5.com/media_word_markdown/458960/media/image144.png)],所得的轮函数记作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UspFPv41-1692860510178)(https://ab.github5.com/media_word_markdown/458960/media/image145.png)]。

数据填充

对原始消息填充的比特串只用来计算MAC,所以这些填充比特串(如果有)不必随原始消息存储或发送。MAC的验证者应当知道填充比特串是否已经被存储或发送。

对要输入到MAC算法的消息比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tJO6Op82-1692860510179)(https://ab.github5.com/media_word_markdown/458960/media/image146.png)],在其右侧填充尽可能少(可能没有)的"0"以使得填充后比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TPVAmGu2-1692860510179)(https://ab.github5.com/media_word_markdown/458960/media/image147.png)]的长度是256比特。

  1. 如果消息比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vXIQnssf-1692860510179)(https://ab.github5.com/media_word_markdown/458960/media/image148.png)]是空串,那么规定填充后的比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a1Eivh7Y-1692860510180)(https://ab.github5.com/media_word_markdown/458960/media/image149.png)]为256个"0"。

应用轮函数

消息比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TG8pDHZI-1692860510180)(https://ab.github5.com/media_word_markdown/458960/media/image150.png)]的长度记作,其二进制表示记作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YBoGQEeh-1692860510181)(https://ab.github5.com/media_word_markdown/458960/media/image152.png)]。在[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rm5Pn3Zz-1692860510181)(https://ab.github5.com/media_word_markdown/458960/media/image153.png)]最左边填充足够少的"0"使得[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MgzJpCGx-1692860510182)(https://ab.github5.com/media_word_markdown/458960/media/image154.png)]的长度为128比特,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tnAV1DXn-1692860510182)(https://ab.github5.com/media_word_markdown/458960/media/image155.png)]最右边的比特和最低位相对应。

将[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pz0iNVtW-1692860510183)(https://ab.github5.com/media_word_markdown/458960/media/image157.png)]、和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nH2CZcMr-1692860510183)(https://ab.github5.com/media_word_markdown/458960/media/image159.png)]与[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ea0BtZUR-1692860510184)(https://ab.github5.com/media_word_markdown/458960/media/image160.png)]的异或值相连接,作为轮函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-79dgIPyt-1692860510184)(https://ab.github5.com/media_word_markdown/458960/media/image161.png)](使用修改过的常数)的输入,即:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z1SHVith-1692860510184)(https://ab.github5.com/media_word_markdown/458960/media/image162.png)]。

截断操作

取比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IaJz3xp8-1692860510185)(https://ab.github5.com/media_word_markdown/458960/media/image163.png)]最左边[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8LgTFhPV-1692860510185)(https://ab.github5.com/media_word_markdown/458960/media/image164.png)]比特,作为MAC值,即:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p9sNe78d-1692860510186)(https://ab.github5.com/media_word_markdown/458960/media/image165.png)]。

MAC算法 3的效率

MAC算法
3需要调用7次轮函数,通过预计算[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RGyO2d1P-1692860510186)(https://ab.github5.com/media_word_markdown/458960/media/image166.png)]、[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lb54nVMy-1692860510186)(https://ab.github5.com/media_word_markdown/458960/media/image167.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6UhYzk8m-1692860510187)(https://ab.github5.com/media_word_markdown/458960/media/image168.png)],可以降低到一次。

常数的计算

本条款中规定的常数,将被用在MAC算法 1和条款8的MAC算法 3中。

比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GAzB84Ei-1692860510187)(https://ab.github5.com/media_word_markdown/458960/media/image169.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CQmnDQRv-1692860510187)(https://ab.github5.com/media_word_markdown/458960/media/image170.png)]是MAC算法中固定的元素,它们通过杂凑函数计算得到(只计算一次),并且在四个专用杂凑函数中各不相同。

128比特的[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QVPtxYCu-1692860510188)(https://ab.github5.com/media_word_markdown/458960/media/image171.png)]和768比特的[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bQC6YfHc-1692860510188)(https://ab.github5.com/media_word_markdown/458960/media/image172.png)]按照如下的方法定义:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7g27lZs7-1692860510189)(https://ab.github5.com/media_word_markdown/458960/media/image173.png)]

其中下标的加法是模3加。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-33Ojqz1a-1692860510189)(https://ab.github5.com/media_word_markdown/458960/media/image174.png)]是496比特的常数,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ExZivZNr-1692860510189)(https://ab.github5.com/media_word_markdown/458960/media/image175.png)]、[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cvlBzzZW-1692860510190)(https://ab.github5.com/media_word_markdown/458960/media/image176.png)]和都是16比特的常数,其中通过重复两次数字的16进制ASCII编码得到(比如说,的表示为3131)。都采用ASCII编码,ASCII编码等同于GB/T
1988-1998所使用的编码。

对于所有的常数和所有的字,最高位和最左边的比特相对应。常数用16进制表示。

专用杂凑函数1

专用杂凑函数
1中的128比特常数定义如下:(用16进制表示)

siduwenku.com 专注免费分享高质量文档

专用杂凑函数
1的轮函数中用到两个常数字序列,它们定义如下:

siduwenku.com 专注免费分享高质量文档![

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vdphwdvv-1692860510196)(https://ab.github5.com/media_word_markdown/458960/media/image193.png)]

专用杂凑函数2

专用杂凑函数
2中的128比特常数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w9T1IJJJ-1692860510196)(https://ab.github5.com/media_word_markdown/458960/media/image194.png)]定义如下:(用16进制表示)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n0fZb6JK-1692860510197)(https://ab.github5.com/media_word_markdown/458960/media/image195.png)]

专用杂凑函数
2的轮函数中用到两个常数字序列[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0nhnOYEb-1692860510197)(https://ab.github5.com/media_word_markdown/458960/media/image196.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-quIj7AJt-1692860510197)(https://ab.github5.com/media_word_markdown/458960/media/image197.png)],它们定义如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YFqEyn8j-1692860510198)(https://ab.github5.com/media_word_markdown/458960/media/image198.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ppKfU38-1692860510198)(https://ab.github5.com/media_word_markdown/458960/media/image199.png)]

专用杂凑函数3

专用杂凑函数
3中的128比特常数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrTW7NWx-1692860510199)(https://ab.github5.com/media_word_markdown/458960/media/image200.png)]定义如下:(用16进制表示)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nx99BLaP-1692860510199)(https://ab.github5.com/media_word_markdown/458960/media/image201.png)]

专用杂凑函数
3的轮函数中用到一个常数字序列[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sPwaFm2L-1692860510199)(https://ab.github5.com/media_word_markdown/458960/media/image202.png)],它定义如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aixdurp7-1692860510200)(https://ab.github5.com/media_word_markdown/458960/media/image203.png)]

专用杂凑函数4

专用杂凑函数
4中的128比特常数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-euiQeFdy-1692860510200)(https://ab.github5.com/media_word_markdown/458960/media/image200.png)]定义如下:(用16进制表示)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uOJUBZRp-1692860510201)(https://ab.github5.com/media_word_markdown/458960/media/image204.png)]

专用杂凑函数
4的轮函数中用到一个常数矩阵序列[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-haTU70uj-1692860510201)(https://ab.github5.com/media_word_markdown/458960/media/image205.png)],它们定义如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-30rx6jQp-1692860510201)(https://ab.github5.com/media_word_markdown/458960/media/image206.png)],![

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z4EZLmOE-1692860510202)(https://ab.github5.com/media_word_markdown/458960/media/image208.png)],![

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9MjiXjK3-1692860510202)(https://ab.github5.com/media_word_markdown/458960/media/image210.png)],![

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cgQHL3PO-1692860510202)(https://ab.github5.com/media_word_markdown/458960/media/image212.png)],![

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P5qDNNBW-1692860510203)(https://ab.github5.com/media_word_markdown/458960/media/image214.png)],![

A.

  

A.

  

A. (资料性附录)\
使用MAC算法生成MAC的示例

概述

本附录提供了使用MAC算法1、2和3生成MAC的过程示例,采用四种专用杂凑函数;其中,专用杂凑函数1、2、3分别是GB/T
18238.3-2002中规定的专用杂凑函数1、2、3,专用杂凑函数4是ISO/IEC
10118-3:2004中规定的专用杂凑函数7。每个杂凑函数值的计算有九个示例。表1包含了序号为1至9的输入比特串。在整个附录中,我们对消息比特串采用ASCII编码,ASCII编码等同于GB/T
1988-1998所使用的编码。

两个128比特的密钥如下:

密钥 1=00112233445566778899AABBCCDDEEFF

密钥 2=0123456789ABCDEFFEDCBA9876543210

表 1 用于测试的输入数据

MAC算法 1

在这一部分的示例中,选取[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BU1qQWYL-1692860510203)(https://ab.github5.com/media_word_markdown/458960/media/image216.png)]。具体来讲,在专用杂凑函数1和3中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o1VwbRqE-1692860510204)(https://ab.github5.com/media_word_markdown/458960/media/image217.png)];在专用杂凑函数2中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DchVkt3w-1692860510204)(https://ab.github5.com/media_word_markdown/458960/media/image218.png)];在专用杂凑函数4中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-47ictGIS-1692860510204)(https://ab.github5.com/media_word_markdown/458960/media/image219.png)]。

专用杂凑函数1

专用杂凑函数2

专用杂凑函数3

专用杂凑函数4

MAC算法 2

在这一部分的示例中,选取[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4C4kB5O4-1692860510205)(https://ab.github5.com/media_word_markdown/458960/media/image220.png)]。具体来讲,在专用杂凑函数1和3中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LkYRe2f8-1692860510205)(https://ab.github5.com/media_word_markdown/458960/media/image221.png)];在专用杂凑函数2中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fqrSzzgf-1692860510205)(https://ab.github5.com/media_word_markdown/458960/media/image222.png)];在专用杂凑函数4中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6xPuwc0a-1692860510206)(https://ab.github5.com/media_word_markdown/458960/media/image223.png)]。

专用杂凑函数1

专用杂凑函数2

专用杂凑函数3

专用杂凑函数4

MAC算法 3

在这一部分的示例中,选取[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E3VDjpSU-1692860510206)(https://ab.github5.com/media_word_markdown/458960/media/image220.png)]。具体来讲,在专用杂凑函数1和3中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qTCMMZEt-1692860510206)(https://ab.github5.com/media_word_markdown/458960/media/image221.png)];在专用杂凑函数2中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xZoCC4gQ-1692860510207)(https://ab.github5.com/media_word_markdown/458960/media/image222.png)];在专用杂凑函数4中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DaaKCFbC-1692860510207)(https://ab.github5.com/media_word_markdown/458960/media/image223.png)]。

专用杂凑函数1

专用杂凑函数2

专用杂凑函数3

专用杂凑函数4

B.

  

B.

  

B. (资料性附录)\
MAC算法的安全性分析

本附录讨论了本部分中MAC算法的安全强度。它的目标是协助本部分的使用者选择合适的MAC算法。

该附录中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xZvIeiuH-1692860510208)(https://ab.github5.com/media_word_markdown/458960/media/image224.png)]表示用密钥为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xv2AKViw-1692860510208)(https://ab.github5.com/media_word_markdown/458960/media/image225.png)]的MAC算法对消息[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FhIcOdWa-1692860510208)(https://ab.github5.com/media_word_markdown/458960/media/image226.png)]进行计算所得到的MAC。

为了确定MAC算法的安全强度,本附录考虑了如下两种攻击策略:

1)伪造攻击:这种攻击是在没有密钥[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zV3W9IdX-1692860510209)(https://ab.github5.com/media_word_markdown/458960/media/image227.png)]的情况下,对消息[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aNjQYfbW-1692860510209)(https://ab.github5.com/media_word_markdown/458960/media/image228.png)]预测[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vLwqmdW2-1692860510209)(https://ab.github5.com/media_word_markdown/458960/media/image229.png)]。如果攻击者能够对一个消息成功预测其MAC,那么称他有能力"伪造"。实际的攻击经常要求一个伪造是可验证的,也就是说,事先以接近于1的概率确认伪造的MAC是正确的。而且,在许多应用中,消息有特定的格式,这就意味着对消息[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6oKheGll-1692860510210)(https://ab.github5.com/media_word_markdown/458960/media/image230.png)]有额外限制。

2)密钥恢复攻击:这种攻击根据大量的(消息,MAC)对找到MAC算法的密钥[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R5SarWMO-1692860510210)(https://ab.github5.com/media_word_markdown/458960/media/image231.png)]。密钥恢复攻击比伪造攻击更强大,因为它一旦成功就可以进行任意地伪造。

一个攻击的可行性依赖于攻击者已知和选择的(消息,MAC)对数目以及离线加密的次数。

对MAC算法可能的攻击描述如下,但是这里并不保证列举了所有的攻击。前两种攻击是一般性的,也就是说,它们对任何MAC算法都有效。第三种适用于任何迭代的MAC算法(更多信息请参阅[5])。

·猜测MAC
这种伪造是不可验证的,成功概率为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ucefzE8U-1692860510211)(https://ab.github5.com/media_word_markdown/458960/media/image232.png)]。这种攻击适用于所有的MAC算法,只有合适地选择[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MOZujlyz-1692860510211)(https://ab.github5.com/media_word_markdown/458960/media/image233.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AizPKVvp-1692860510211)(https://ab.github5.com/media_word_markdown/458960/media/image234.png)]才能够抵抗这种攻击。

·密钥穷搜索
这种攻击需要运行平均[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EM1SC0I8-1692860510212)(https://ab.github5.com/media_word_markdown/458960/media/image235.png)]次MAC算法,并且需要[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FR7eO1pk-1692860510212)(https://ab.github5.com/media_word_markdown/458960/media/image236.png)]对(消息,MAC)以唯一确定密钥。同样这种攻击适用于所有MAC算法,合适地选择[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZXr6HgX-1692860510213)(https://ab.github5.com/media_word_markdown/458960/media/image237.png)]能够抵抗这种攻击。另外,MAC算法使用者也可以阻止攻击者获得[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEyunZu0-1692860510213)(https://ab.github5.com/media_word_markdown/458960/media/image238.png)]对(消息,MAC)以抵抗这种攻击。比如说,若[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P2pl7N9q-1692860510213)(https://ab.github5.com/media_word_markdown/458960/media/image239.png)],[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xb8ufDIG-1692860510214)(https://ab.github5.com/media_word_markdown/458960/media/image240.png)],那么对于给定的(消息,MAC)对,大约有[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wKyLXkj5-1692860510214)(https://ab.github5.com/media_word_markdown/458960/media/image241.png)]个密钥和其对应;如果每次使用MAC算法后都改变密钥,那么密钥穷搜索攻击并不比猜测MAC攻击更有效。

·生日攻击 [5]
如果攻击者获得足够数目的(消息,MAC)对,他就能够找到这样两个消息[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4TPvkQWQ-1692860510214)(https://ab.github5.com/media_word_markdown/458960/media/image242.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BQNKYJq1-1692860510215)(https://ab.github5.com/media_word_markdown/458960/media/image243.png)]满足:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fj1xzIbD-1692860510216)(https://ab.github5.com/media_word_markdown/458960/media/image244.png)]并且两次输出变换的输入值在两次MAC计算中是相等的;这被称作内部碰撞。如果消息[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wsqku6zJ-1692860510216)(https://ab.github5.com/media_word_markdown/458960/media/image245.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WK8wBY13-1692860510216)(https://ab.github5.com/media_word_markdown/458960/media/image246.png)]构成内部碰撞,那么对任意的比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KLTWgZOl-1692860510217)(https://ab.github5.com/media_word_markdown/458960/media/image247.png)]都有[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-opXmm2oO-1692860510217)(https://ab.github5.com/media_word_markdown/458960/media/image248.png)]。这就构成了一种伪造,当攻击者得到比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4MvYPmCu-1692860510218)(https://ab.github5.com/media_word_markdown/458960/media/image249.png)]的MAC时,就能够预测比特串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H0XhwWRs-1692860510218)(https://ab.github5.com/media_word_markdown/458960/media/image250.png)]的MAC。这种伪造依赖于消息的特殊格式,可能对许多应用没有威胁;但是,这种攻击的扩展版本在消息格式方面有更大的灵活性。这种攻击需要选择一个消息比特串,收集大约[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jRyRls8J-1692860510218)(https://ab.github5.com/media_word_markdown/458960/media/image251.png)]对已知(消息,MAC)和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ss7Rs5AI-1692860510219)(https://ab.github5.com/media_word_markdown/458960/media/image252.png)]对选择(消息,MAC),其中[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wk3RmgqI-1692860510219)(https://ab.github5.com/media_word_markdown/458960/media/image253.png)]是中间状态的比特长度。

通过以下方式可以避免生日攻击:在要处理的消息前面加上一个序列号消息块,使得MAC算法是带状态的。这就要求在MAC算法实现中要保证在一个密钥周期内,每个序列号在MAC计算过程中只用一次。这种要求并不是在所有环境下都可行。

·捷径密钥恢复
基于内部碰撞的密钥恢复攻击适用于某些MAC算法,但目前还没有关于本部分中MAC算法的捷径密钥恢复攻击。

·侧信道攻击
针对RIPEMD-160和SHA-1算法中异或、模加和模乘运算的特点,可以使用差分能量分析的方法恢复MAC算法
2的全部密钥[6]。

安全证明

若如下的假定成立,那么MAC算法 1被证明是安全的[4]:

·
使用密钥为初始值[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p1GW68kL-1692860510219)(https://ab.github5.com/media_word_markdown/458960/media/image254.png)]和附加常数的轮函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7mRTWwYr-1692860510220)(https://ab.github5.com/media_word_markdown/458960/media/image255.png)]是一个伪随机函数。

  1. 一个伪随机函数使用一个密钥,对于不知道密钥的敌手,它的表现和一个随机函数相仿(也就是说,伪随机函数和随机函数很难区别)。

若如下的假定成立,那么MAC算法 2被证明是安全的[3]:

·
当[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LUnqEaXe-1692860510220)(https://ab.github5.com/media_word_markdown/458960/media/image256.png)]保密的时候,杂凑函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WrlFosNN-1692860510220)(https://ab.github5.com/media_word_markdown/458960/media/image257.png)]是抗碰撞的。

·
使用密钥为初始值[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yl8aW75a-1692860510221)(https://ab.github5.com/media_word_markdown/458960/media/image258.png)]的轮函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-47ZMDxlz-1692860510221)(https://ab.github5.com/media_word_markdown/458960/media/image259.png)]是一个强MAC算法(也就是说,很难预测它的输出)。

·
密钥[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XSFsYUib-1692860510222)(https://ab.github5.com/media_word_markdown/458960/media/image260.png)]、[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ok9HiUKN-1692860510222)(https://ab.github5.com/media_word_markdown/458960/media/image261.png)]和随机密钥不可区分;相当于要求使用密钥[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oWNw9Jf9-1692860510222)(https://ab.github5.com/media_word_markdown/458960/media/image262.png)]的轮函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y0vB5VnK-1692860510223)(https://ab.github5.com/media_word_markdown/458960/media/image263.png)]是"弱"伪随机函数("弱"源于敌手不能直接得到[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C93njWYJ-1692860510223)(https://ab.github5.com/media_word_markdown/458960/media/image264.png)]和[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GPEMFsYq-1692860510223)(https://ab.github5.com/media_word_markdown/458960/media/image265.png)])。

进一步的证明指出,只要轮函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lCb984zW-1692860510224)(https://ab.github5.com/media_word_markdown/458960/media/image255.png)]是伪随机函数,即可保证MAC算法
2是伪随机函数[7]。另外,当轮函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EyuWf48I-1692860510224)(https://ab.github5.com/media_word_markdown/458960/media/image255.png)]具备不可延展和不可预测性质的时候,MAC算法
2被证明是不可伪造的[8]。

其它研究表明,当采用弱的杂凑函数的时候,MAC算法2的安全性有所降低[9-13]。

MAC算法 3的安全性假设和MAC算法
1和2中对轮函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-disiSS98-1692860510224)(https://ab.github5.com/media_word_markdown/458960/media/image266.png)]的假设相似。

[]{#BKCKWX .anchor}参 考 文 献

  1. ISO 16609:2004 Banking – Requirements for message authentication
    using symmetric techniques.

  2. ISO/IEC 10181-6:1996 Information technology - Open Systems
    Interconnection - Security frameworks for open systems: Integrity
    framework.

  3. M. Bellare, R. Canetti, H. Krawczyk, “Keying hash functions for
    message authencication,” Advances in Cryptology, Proceedings
    Crypto’96, LNCS 1109, N. Koblitz, Ed., Springer-Verlag, 1996, pp.
    1-15.

  4. M. Bellare, R. Canetti, H. Krawczyk, “Pseudorandom functions
    revisited: The cascade construction and its concrete security,”
    Proc. 37th Annual Symposium on the Foundations of Computer Science,
    IEEE, 1996, pp. 514-523. Full version via
    http://www-cse.ucsd.edu/users/mihir.

  5. B. Preneel, P.C. van Oorschot, “MDx-MAC and building fast MACs from
    hash functions,” Advances in Cryptology, Proceedings Crypto’95,
    LNCS 963, D. Coppersimith, Ed., Springer-Verlag, 1995, pp. 1-14.

  6. K. Lemke, K. Schramm, C. Paar, "DPA on n-bit sized boolean and
    arithmetic operations and its application to IDEA, RC6, and the
    HMAC-construction, " Proceedings CHES’04, LNCS 3156, M. Joye and
    J.J. Quisquater Eds., Springer-Verlag, 2004, pp. 205-219.

  7. M. Bellare, “New proofs for NMAC and HMAC: security without
    collision-resistance,” Advances in Cryptology, Proceedings
    Crypto"06, LNCS 4117, Dwork Ed., Springer-Verlag, 2006, pp.
    602-619.

  8. M. Fischlin “Security of NMAC and HMAC based on non-malleability
    ,” Proceedings CT-RSA '08, LNCS 4964, T. Malkin, Ed,
    Springer-Verlag, 2008, pp. 138-154.

  9. S. Contini, Yiqun Lisa Yin “Forgery and Partial Key-Recovery
    Attacks on HMAC and NMAC Using Hash Collisions,” Proceedings
    ASIACRYPT '08, LNCS 4284, X. Lai and K. Chen, Eds, Springer-Verlag,
    2006, pp. 37-53.

  10. J. Kim, A. Biryukov, B. Preneel, S. Hong “On the Security of HMAC
    and NMAC Based on HAVAL, MD4, MD5, SHA-0 and SHA-1,” Proceedings
    SCN '06, LNCS 4116, R. De Prisco and M. Yung, Eds, Springer-Verlag,
    2006, pp. 242-256.

  11. P. Fouque, G. Leurent, P. Q. Nguyen “Full Key-Recovery Attacks on
    HMAC/NMAC-MD4 and NMAC-MD5,” Proceedings CRYPTO '07, LNCS 4622, A.
    Menezes, Ed, Springer-Verlag, 2007, pp. 13-30.

  12. L. Wang, K. Ohta, N. Kunihiro “New Key-Recovery Attacks on
    HMAC/NMAC-MD4 and NMAC-MD5,” Proceedings EUROCRYPT '08, LNCS
    4965, N. Smart, Ed, Springer-Verlag, 2008, pp. 237-253.

  13. X. Wang, H. Yu, W. Wang, H. Zhang, T. Zhan “Cryptanalysis on
    HMAC/NMAC-MD5 and MD5-MAC ,” Proceedings EUROCRYPT '09, LNCS
    5479, A. Joux, Ed, Springer-Verlag, 2009, pp. 121-133.

_________________________________

总结

更多内容 可以 点击 访问 siduwenku.com 网站的报告 进一步学习

联系我们

北京市生产经营单位安全生产主体责任规定.pdf

相关文章:

专用杂凑函数的消息鉴别码算法学习记录

声明 本文是学习github5.com 网站的报告而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 范围 GB/T 15852的本部分规定了三种采用专用杂凑函数的消息鉴别码算法。这些消息鉴别码算法可用作数据完整性检验,检验数据是否被非授权地改变。同样…...

Golang使用消息队列(RabbitMQ)

最近在使用Golang做了一个网盘项目(类似百度网盘),这个网盘项目有一个功能描述如下:用户会删除一个文件到垃圾回收站,回收站的文件有一个时间期限,比如24h,24h后数据库中记录和oss中文件会被删除…...

Apache Spark远程代码执行漏洞(CVE-2023-32007)漏洞复现

漏洞描述 Apache Spark是美国阿帕奇(Apache)基金会的一款支持非循环数据流和内存计算的大规模数据处理引擎。 Apache Spark 3.4.0之前版本存在命令注入漏洞,该漏洞源于如果ACL启用后,HttpSecurityFilter中的代码路径可以允许通过…...

春秋云镜 :CVE-2020-21650(MyuCMS后台rce)

一、题目 靶标介绍: MyuCMS开源内容管理系统,采用ThinkPHP开发而成的社区商城聚合,插件,模板,轻便快捷容易扩展 其2.2版本中admin.php/config/add方法存在任意命令执行漏洞. 进入题目: exp: url/index.p…...

测试框架pytest教程(7)实现 xunit 风格的setup

pytest支持setup和teardown,对于使用unittest和nose框架的用户来说对这些很熟悉,但是在pytest可以使用功能更强大的fixture来实现固定装置。 模块级别 如果单个模块中有多个测试函数和测试类,您可以选择实现以下固定方法,这些方…...

用队列实现栈

目录 题目题目要求示例 解答方法一、实现思路时间复杂度和空间复杂度代码 方法二、实现思路时间复杂度和空间复杂度代码 方法三、实现思路时间复杂度和空间复杂度代码 总结 题目 用队列实现栈 题目要求 题目链接 示例 解答 方法一、 使用两个队列来实现栈。 实现思路 题…...

Anolis 8.6 下 Redis 7.2.0 集群搭建和配置

Redis 7.2.0 搭建和集群配置 一.Redis 下载与单机部署1.Redis 下载2.虚拟机配置3.Redis 单机源码安装和测试4.Java 单机连接测试1.Pom 依赖2.配置文件3.启动类4.配置类5.单元测试6.测试结果 二.Redis 集群部署1.主从1.从节点配置2.Java 测试 2.哨兵1.哨兵节点配置2.复制一个哨兵…...

综合能源系统(8)——综合能源系统支撑技术

综合能源系统关键技术与典型案例  何泽家,李德智主编 1、大数据技术 1.1、大数据技术概述 大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高…...

MySQL5.7数据目录结构

以CentOS7为例,数据目录为/var/lib/mysql/,其内容如下: [rootscentos szc]# ll /var/lib/mysql/ total 122952 -rw-r----- 1 mysql mysql 56 Jan 15 16:02 auto.cnf -rw------- 1 mysql mysql 1680 Jan 15 16:02 ca-key.pem -rw-r…...

Python Opencv实践 - 图像直方图均衡化

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape)#图像直方图计算 #cv.calcHist(images, channels, mask, histSize, ranges, hist, accumulate) #images&…...

GAN:对抗生成网络,前向传播和后巷传播的区别

目录 GAN:对抗生成网络 损失函数 判别器开始波动很大,先调整判别器 生成样本和真实样本的统一:真假难辨​编辑 文字专图片​编辑 头像转表情包​编辑 头像转3D​编辑 后向传播 1. 前向传播(forward) 2. 反向传播&…...

压力变送器的功能与应用

压力变送器是用于测量气体或者液体等介质压力的设备,能够将压力转化为4 G信号传输到监控平台,工作人员可以在电脑或者手机上登录平台查看监测到的数据,并根据数据制定下一步的计划。 压力变送器的功能: 压力变送器采用了高性能感…...

排序算法:选择排序

选择排序的思想是&#xff1a;双重循环遍历数组&#xff0c;每经过一轮比较&#xff0c;找到最小元素的下标&#xff0c;将其交换至首位。 public static void selectionSort(int[] arr) {int minIndex;for (int i 0; i < arr.length - 1; i) {minIndex i;for (int j i …...

Windows运行Spark所需的Hadoop安装

解压文件 复制bin目录 找到winutils-master文件hadoop对应的bin目录版本 全部复制替换掉hadoop的bin目录文件 复制hadoop.dll文件 将bin目录下的hadoop.dll文件复制到System32目录下 配置环境变量 修改hadoop-env.cmd配置文件 注意jdk装在非C盘则完全没问题&#xff0c;如果装在…...

KusionStack使用文档

下载安装 1. 安装 Kusionup 如果想自定义默认安装版本&#xff0c;可以运行下述命令&#xff08;将最后的 openlatest 替换为你想要默认安装的版本号就就行&#xff09;&#xff1a; curl -s "http://kusion-public.oss-cn-hzfinance.aliyuncs.com/cli/kusionup/script…...

ONLYOFFICE 文档如何与 Alfresco 进行集成

ONLYOFFICE 文档是一款开源办公套件&#xff0c;其是包含文本文档、电子表格、演示文稿、数字表单、PDF 查看器和转换工具的协作性编辑工具。要在 Alfresco 中使用 ONLYOFFICE 协作功能&#xff0c;可以将他们连接集成。阅读本文&#xff0c;了解这如何实现。 关于 ONLYOFFICE…...

PostgreSQL下载路径与安装步骤

PgSQL介绍 PgSQL和MySQL一样是一种关系模型的数据库&#xff0c;全称为PostgreSQL 数据库。 优势&#xff1a;PgSQL是一种可扩展、可靠、可定制的数据库管理系统&#xff0c;具有良好的数据完整性和安全性&#xff0c;支持多种操作系统&#xff0c;包括 Linux、Windows、MacOS …...

如何在PHP中编写条件语句

引言 决策是生活不可缺少的一部分。从平凡的着装决定&#xff0c;到改变人生的工作和家庭决定。在开发中也是如此。要让程序做任何有用的事情&#xff0c;它必须能够对某种输入做出响应。当用户点击网站上的联系人按钮时&#xff0c;他们希望被带到联系人页面。如果什么都没有…...

LLM架构自注意力机制Transformers architecture Attention is all you need

使用Transformers架构构建大型语言模型显著提高了自然语言任务的性能&#xff0c;超过了之前的RNNs&#xff0c;并导致了再生能力的爆炸。 Transformers架构的力量在于其学习句子中所有单词的相关性和上下文的能力。不仅仅是您在这里看到的&#xff0c;与它的邻居每个词相邻&…...

计算机网络 QA

DNS 的解析过程 浏览器缓存。当用户通过浏览器访问某域名时&#xff0c;浏览器首先会在自己的缓存中查找是否有该域名对应的 IP 地址&#xff08;曾经访问过该域名并且没有清空缓存&#xff09;系统缓存。当浏览器缓存中无域名对应的 IP 地址时&#xff0c;会自动检测用户计算机…...

安果天气预报 产品介绍

软件介绍版本号 2.0.5 安果天气预报&#xff1a;全世界覆盖&#xff0c;中国定制 想要查找北京、上海、纽约、东京还是巴黎的天气&#xff1f;一款简约的天气预 报应用为你呈现。专注于为用户提供纯净的天气体验&#xff0c;我们不发送任何打扰的通知。包含空气质量、能见度、…...

net start Mysql 启动服务时 ,显示“Mysql服务正在启动 Mysql服务无法启动 服务没有报告任何错误

一、问题 有时候&#xff0c;输入net start Mysql 启动服务时 mysql>net start Mysql 显示 Mysql服务正在启动 Mysql服务无法启动 服务没有报告任何错误 二、原因 由于mysql的默认端口是3306&#xff0c;因此在启动服务的时候&#xff0c;如果此端口被占用&#xff0c;就会出…...

DAY24

题目一 啊 看着挺复杂 其实很简单 第一种方法 就是纵轴是怪兽编号 横轴是能力值 看看能不能打过 逻辑很简单 看看能不能打得过 打过的就在花钱和直接打里面取小的 打不过就只能花钱 这种方法就导致 如果怪兽的能力值很大 那么我们就需要很大的空间 所以引出下一种做法 纵…...

Redis过期数据的删除策略

1 介绍 Redis 是一个kv型数据库&#xff0c;我们所有的数据都是存放在内存中的&#xff0c;但是内存是有大小限制的&#xff0c;不可能无限制的增量。 想要把不需要的数据清理掉&#xff0c;一种办法是直接删除&#xff0c;这个咱们前面章节有详细说过&#xff1b;另外一种就是…...

如何使用CSS实现一个拖拽排序效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现拖拽排序效果的CSS和JavaScript示例⭐ HTML 结构⭐ CSS 样式 (styles.css)⭐ JavaScript 代码 (script.js)⭐ 实现说明⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦…...

leetcode 118.杨辉三角

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/pascals-triangle/description/ 代码&#xff1a; class Solution { public:vector<vector<int>> generate(int numRows) {// 先开空间vector<vector<int>> v;v.…...

微服务框架之SpringBoot面试题汇总

微服务框架之SpringBoot面试题汇总 什么是Spring Boot&#xff1f; 多年来&#xff0c;随着新功能的增加&#xff0c;spring变得越来越复杂。Spring项目&#xff0c;我们必须添加构建路径或添加Maven依赖关系&#xff0c;配置应用程序服务器&#xff0c;添加spring配置。因此&…...

Promise详解

目录 一、前言&#xff1a;为什么会出现Promise?二、Promise是什么?2.1 Promise的初体验 三、使用Promise的好处?3.1 指定回调函数的方式更加灵活3.2 可以解决回调地狱问题&#xff0c;支持链式调用 四、Promise实例对象的两个属性五、resolve函数以及reject函数六、Promise…...

Oracle 查询(当天,月,年)的数据

Trunc 在oracle中&#xff0c;可利用 trunc函数 查询当天数据&#xff0c;该函数可用于截取时间或者数值&#xff0c;将该函数与 select 语句配合使用可查询时间段数据 查询当天数据 --sysdate是获取系统当前时间函数 --TRUNC函数用于截取时间或者数值&#xff0c;返回指定的…...

什么是梯度下降

什么是梯度下降 根据已有数据的分布来预测可能的新数据&#xff0c;这是回归 希望有一条线将数据分割成不同类别&#xff0c;这是分类 无论回归还是分类&#xff0c;我们的目的都是让搭建好的模型尽可能的模拟已有的数据 除了模型的结构&#xff0c;决定模型能否模拟成功的关键…...

开黑啦kook 机器人开发 PHP swoole Liunx 服务器(宝塔)

安装环境 PHP 拓展 直接使用 宝塔一键安装 &#xff08;Windows系统不支持&#xff09; 设置命令行的PHP版本避免执行脚本时 获取不到 swoole 检查swoole是否安装成功 获取官方SDK GitHub - kaiheila/php-bot: 开黑啦机器人的php版本https://github.com/kaiheila/php-bot 配…...

Vue 中hash 模式与 history 模式的区别

hash 模式&#xff1a; - 地址中永远带着 # 号&#xff0c;不美观。 - 兼容性比较好。 - 通过手机 app 分享地址时&#xff0c;如果 app 效验严格&#xff0c;该地址会被标记为不合法。 history 模式&#xff1a; - 地址干净&#xff0c;美观。 - 兼容性和 hash 模式相比…...

Dockerfile推送私有仓库的两个案例

一&#xff0c;编写Dockerfile制作Web应用系统nginx镜像&#xff0c;生成镜像nginx:v1.1&#xff0c;并推送其到私有仓库。 具体要求如下&#xff1a; &#xff08;1&#xff09;基于centos基础镜像&#xff1b; &#xff08;2&#xff09;指定作者信息&#xff1b; &#xff…...

【指标】指标公式大全,款款经典(建议珍藏)!-神奇指标网

三、指标源码&#xff1a; 1、连续三天高开高走的选股公式 count(o〉ref(c,1&#xff09;andc>o&#xff0c;3)3&#xff1b; 2、连续3天每天的最低价都比前一天高 count&#xff08;l〉ref(c,1&#xff09;,3)3&#xff1b; 3、周量缩小50%或40&#xff05;或n&#x…...

面试题目收集

Zset排行榜功能如何设计key&#xff1f; key就设计成排行榜的名字&#xff0c;比如下面插入或者更新数据 Long zadd(final String key, final double score, final String member) key : 排行榜的名字 memeber : 用户 score : 用户的分数 项目…...

创建R包-2.1:在RStudio中使用Rcpp制作R-Package(更新于2023.8.23)

目录 0-前言 1-在RStudio中创建R包项目 2-创建R包 2.1通过R函数创建新包 2.2在RStudio通过菜单来创建一个新包 2.3关于R包创建的说明 3-添加R自定义函数 4-添加C函数 0-前言 目标&#xff1a;在RStudio中创建一个R包&#xff0c;这个R包中包含C函数&#xff0c;接口是Rc…...

chatGPT如何解释泽众PerformanceRunner性能测试工具?

PerformanceRunner 是一个性能测试工具&#xff0c;可以帮助测试人员进行性能测试。它的主要功能包括&#xff1a; 1. 脚本录制和回放&#xff1a; PerformanceRunner可以录制 HTTP/HTTPS 通信协议的脚本&#xff0c;并能够回放模拟真实用户的行为。通过录制和回放&#xff0c…...

LA@向量组线性相关性

文章目录 向量组线性相关性线性相关线性无关多向量向量组线性相关单向量向量组的线性相关性单位向量向量组线性相关性双向量向量组的线性相关性双向量线性相关的几何意义三向量线性相关的几何意义包含零向量的向量组线性相关概念迁移:线性方程组和线性相关齐次线性方程组和向量…...

[k8s] 基于ubuntu22部署k8s1.28记录

k8s1.28部署已经不依赖docker了&#xff0c;所以不需要安装docker。同理&#xff1a;如果想查看镜像和运行容器&#xff0c;也不能用docker命令去查询了&#xff1a;需要使用crictl。不过crictl命令参数兼容docker&#xff0c;所以使用上手没有啥难度。 1. 配置安装源 根据k8…...

React 事件代理 和原生事件绑定混用:你的选择会导致什么问题?

在React开发中&#xff0c;事件处理是一个常见的任务。React提供了一个方便的事件系统&#xff0c;但有时我们可能会在React组件中与原生DOM事件一起使用。本文将讨论React的事件代理机制与原生事件绑定混用可能导致的一些问题。 React的事件代理 React采用了一种称为"事…...

使用阿里云国外和国内云服务器有什么注意事项?

使用阿里云的国外和国内云服务器时&#xff0c;有一些注意事项需要考虑&#xff1a; 地理位置&#xff1a;选择离你的用户或数据中心最近的地理位置&#xff0c;可以减少延迟和提高访问速度。对于国内用户&#xff0c;使用国内云服务器可能更好&#xff1b;对于国外用户&#…...

【计算机网络】【常考问题总结】

1. ping 127.0.0.1 后会发生什么&#xff1f; ping 127.0.0.1 &#xff1b;ping 0.0.0.0 &#xff1b; ping localhost 面试官问&#xff1a;断网了&#xff0c;还能ping通 127.0.0.1 吗&#xff1f;为什么&#xff1f;_kevin_tech的博客-CSDN博客 2. MTU&#xff0c;MMU是…...

前端基础(props emit slot 父子组件间通信)

前言&#xff1a;如何实现组件的灵活使用&#xff0c;今天学习组件封装用到的props、slot和emit。 目录 props 子组件 父组件 示例代码 slot 示例代码 作用域插槽 emit 示例代码 props 需要实现在其他组件中使用同一个子组件。 子组件 子组件&#xff08;所谓子组件…...

即时通讯:短轮询、长轮询、SSE 和 WebSocket 间的区别

在现代 Web 开发中&#xff0c;即时通讯已经成为许多应用程序的重要组成部分。为了实现即时通讯&#xff0c;开发人员通常使用不同的技术和协议。本文将介绍四种常见的即时通讯实现方法&#xff1a;短轮询、长轮询、SSE&#xff08;服务器发送事件&#xff09;和 WebSocket&…...

高忆管理:药店零售概念回落,开开实业走低,此前7日大涨超80%

药店零售概念18日盘中大幅下挫&#xff0c;到发稿&#xff0c;华人健康跌逾11%&#xff0c;漱玉布衣、塞力医疗跌超9%&#xff0c;重药控股、浙江震元、榜首医药等跌超7%&#xff0c;药易购跌超6%&#xff0c;开开实业跌超3%。 值得注意的是&#xff0c;开开实业此前7个交易日斩…...

Go1.19 排序算法设计实践 经典排序算法对比

详解经典排序算法 01 为什么要学习数据结构与算法 抖音直播排行榜功能 案例 规则&#xff1a;某个时间段内&#xff0c;直播间礼物数TOP10房间获得奖励&#xff0c;需要在每个房间展示排行榜解决方案 •礼物数量存储在Redis-zset中&#xff0c;使用skiplist使得元素整体有序 •…...

3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)

1.Ubuntu Qt 配置交叉编译环境 1.1 ubuntu 20.04安装Qt sudo apt-get install qtcreator 1.2 配置QT GCC配置同上 最后配置Kits 上面设置完成之后 &#xff0c;设置Kits 中的Device(这是为了能够直接把项目部署到arm设备上) 点击NEXT之后会出现连接被拒绝&#xff0c;不用担…...

CentOS下MySQL的彻底卸载的几种方法

这里我为大家详细讲解下“CentOS下MySQL的彻底卸载的几种方法”的完整攻略。 前言 先通过下列命令找到需要删除的相关文件 rpm -qa mysql* whereis mysql find / -name mysql 需要上传的命令介绍 删除 MySQL 数据目录 rm -rf /var/lib/mysql 删除配置文件 rm -rf /etc/my.cnf…...

Spring 的异常处理机制

Spring 的异常处理机制 ​ 在Spring中&#xff0c;异常处理是一个非常重要的方面&#xff0c;用于捕获和处理应用程序中可能出现的异常情况。Spring提供了多种方式来处理异常。 ​ 使用Spring的异常处理机制主要有以下优点&#xff1a; ​ **统一的异常处理&#xff1a;**通…...

java八股文面试[JVM]——JVM参数

参考&#xff1a;JVM学习笔记&#xff08;一&#xff09;_卷心菜不卷Iris的博客-CSDN博客 堆参数调优入门 jdk1.7&#xff1a; jdk1.8&#xff1a; 面试题&#xff1a;给定-Xms Xmx -Xmn 问 最大的eden区域是多少M。 常用JVM参数 怎么对jvm进行调优&#xff1f;通过参数配…...