什么是MAC?什么是消息杂凑值?
时间: 2023-07-03 22:20:55 浏览: 222
MAC是消息认证码,是一种用于确保消息完整性和真实性的技术。它基于密码学原理,使用一个密钥和消息作为输入,生成一个固定长度的输出,用于验证消息是否被篡改或伪造。
消息杂凑值(也称为哈希值)是一种固定长度的数据摘要,通常用于验证消息的完整性、识别数据、以及加密和解密数据。它通过对消息进行数学运算,生成一个独一无二的、固定长度的摘要值。即使原始消息只有微小的变化,也会导致生成的哈希值完全不同。消息杂凑值是一种单向函数,无法从哈希值中恢复出原始消息。
相关问题
请回答下面几个问题1、试述消息认证码和消息检测码的区别与联系? 2、安全散列函数有哪些特性? 什么是碰撞? 3、生日问题与散列函数的碰撞性有什么关系?找到一个碰撞意味着什么?代价是多大? 4、假设有一消息长度为448比特,使用MD5杂凑算法,请问是否需要填充,填充多少比特,填充后消息长度为多少? 5、设有一消息长度为20898比特,使用SHA-1杂凑算法,请问是否需要填充?填充多少个0?
好的,我已经记录下来了,请依次回答您的问题:
1、消息认证码和消息检测码的区别在于:消息认证码(MAC)是一种带有密钥的算法,用于对消息进行加密和验证,以保证消息的完整性和真实性;而消息检测码(CRC)是一种不带密钥的算法,用于检测消息的传输错误,并纠正错误,以保证消息的准确性。两者的联系在于都是用于保证消息在传输过程中的完整性和正确性。
2、安全散列函数具有以下特性:
- 输入长度任意,输出长度固定;
- 输出值是不可预测的,即对于不同的输入值,输出值应该是不同的;
- 输出值是唯一的,即对于同一个输入值,输出值应该是唯一的;
- 不可逆,即无法从输出值推算出输入值;
- 对于输入值的微小变化,输出值也应该有较大的变化。
碰撞是指不同的输入值经过散列函数处理后,得到相同的输出值。这种情况是不应该出现的,因为一旦发生碰撞,就会导致数据的完整性和真实性无法保证。
3、生日问题与散列函数的碰撞性有关系:生日问题是指在一群人中,两个人生日相同的概率有多大。同样地,在散列函数中,也存在碰撞的概率。如果散列函数的输出位数是n位,那么在输入2^(n/2)个不同的值时,就会出现碰撞的概率达到50%。找到一个碰撞意味着散列函数存在缺陷,代价可能会非常高,因为攻击者可以通过构造相同散列值的两个输入值来进行攻击。
4、MD5算法要求对输入的消息进行填充,填充的方式是在消息末尾添加一个1和若干个0,使得填充后的消息长度满足对512取模后等于448。如果消息长度已经是448比特的倍数,还需要再添加一个块,这个块的长度为512比特,并且第一个比特为1,其余为0。因此,在这个例子中,需要填充64比特(即一个1和63个0),填充后消息长度为512比特 + 448比特 = 960比特。
5、SHA-1算法也要求对输入的消息进行填充,填充的方式是在消息末尾添加一个1和若干个0,使得填充后的消息长度满足对512取模后等于448。如果消息长度已经是448比特的倍数,还需要再添加一个块,这个块的长度为512比特,并且第一个比特为1,其余为0。在这个例子中,需要填充10个0,填充后消息长度为20928比特。
阅读全文