2.2 散列算法介绍2.2.1 散列算法(函数)概念散列函数没有密钥,散列函数就是把可变输入长度串(叫做预映射, Pre-image)转换成固定长度输出串(叫做散列值)的一种函数。 用法:可以利用散列函数进行数据文件的完整性校验。 常用的消息摘要算法有: MAC:消息认证码(带密钥的Hash函数)。密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。 安全性依赖于Hash函数,故也称带密钥的Hash函数。消息认证码是基于密钥和消息摘要【hash】所获得的一个值,可用于数据源发认证和完整性校验。 1. 发送者通过MAC算法计算出消息的MAC值,并和消息一起发给收信者 2. 收信者用同样的MAC算法计算收到的消息的MAC值,并对比两者。 HMAC:Hash-based message authentication code,利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。 a specific construction for calculating a message authentication code (MAC) involving a cryptographic hash function in combination with a secret cryptographic key. As with any MAC, it may be used to simultaneously verify both the data integrity and the authenticity of a message.【主要是为了能让人对对方身份正确性和消息有效性进行验证,与消息摘要的最大不同,就是有签名密钥!】 方法: HMAC(K,m) = H((K ⊕ opad) ∥ H((K ⊕ ipad) ∥ m)) https://www.cnblogs.com/songhan/archive/2012/07/29/2613898.html中有MAC和HMAC的具体区别。 HMAC是需要一个密钥的。所以,HMAC_SHA1也是需要一个密钥的,MD5,SHA1不需要。 2.2.2 数字签名(见PKI)数字签名协同条件:散列函数:散列函数是数字签名的一个重要辅助工具, 应用散列函数可以生成一个文件的,具有固定长度的文件摘要,从而使数字签名可以迅速有效地签名一个任意长度的文件。一般地,对文件的任意小改动,都会改变文件的散列值,从而,秘密的散列函数可以用来检测病毒等对文件的破坏。 数字签名方案:-直接数字签名 -需仲裁的数字签名 |
|