什么是基于AES的CMAC算法?
采用AES加密算法,使用密钥K,对明文P进行加密,得到的密文C,作为明文P的认证码,和明文P一起传输给接收方。接收方收到后,再使用自己的密钥,对明文再做一次AES加密,生成新的认证码,与接收到的发送方的认证码进行对比验证。如果相等,说明明文没有被篡改,接收方就可以接收明文并处理;如果不相等,说明明文被篡改,数据不安全,则丢弃!
这就是基于AES的CMAC算法,多用于消息数据的正确性认证,生成的认证码,叫作message authentication code,消息认证码,简称MAC。
什么是Hash?
简单来说,把任意长度的输入数据通过散列算法变换成固定长度的输出数据(Hash值)。输入值的长度通常比输出值大,这是一种压缩映射。不同的输入可能会有相同的Hash值,所以你无法通过Hash值来逆向解出输入值。所以Hash值不能用在数据的加解密上,因为不可逆!
那可以用在哪呢?可以用在文件的数字签名上。
什么是签名?
当我们在手写一份文件或合同时,为了确认这份文件的正确性,会签上自己的姓名。别人拿到这份文件,想确认其真伪,不需要辨别里面的内容的真实性,只需要鉴定文件签名的真实性即可。签名正确,即代表文件真实。签名是假的,那么这份文件就是假的。
同样地,数字签名是互联网中用来替代人工签名的方式。通过对互联网中文件进行数字签名,来确保其真实性。具体操作如下:文章来源:https://www.toymoban.com/news/detail-580882.html
- 发送者按双方约定的Hash算法对报文或文件进行计算,得到一个固定长度的Hash值。
- 然后用自己的密钥对这个Hash值进行加密,得到的密文就是签名。签名连同明文一起,发送给接收者。
- 接收者收到后,首先对明文进行Hash值计算,然后再用自己的密钥对密文部分进行解密,得到发送者的Hash值。两个Hash值进行比较,如果相等,说明数据为真。
以上可以看出:文章来源地址https://www.toymoban.com/news/detail-580882.html
- 数字签名和CMAC算法很相似,都是为了实现明文的真实性,防止被篡改。
- 数字签名是由明文的Hash值加密得到的密文。
- 数字签名和CMAC不同的是:CMAC是对MAC值进行比较,而数字签名是对Hash值进行比较。
- 由于CMAC里不管是发送方还是接收方,都只用到了加密,没有用到解密,所以它一般采用对称密钥。而数字签名中发送方用到加密,接收方用到解密,所以它一般采用非对称密钥。发送方保管的是私钥,接收方使用的是公钥。
到了这里,关于基于AES的CMAC算法、MAC、Hash、数字签名之间的关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!