消息认证码算法的产生一定程度上是因为,处于安全考虑很多人已经开始在做消息摘要之前,先对原始的消息加上一个key之后,再做hash之类的处理,但是这样的处理方式仍然存在安全隐患,于是消息认证码算法应运而生。HMAC底层使用hash算法,是使用场景比较多的一种消息认证码(MAC)算法。关于HMAC和原始的Hash算法的安全性比较见wiki。
总体上来说,HMAC虽然使用了Hash作为底层算法,但是规避了Hash算法自身缺陷导致的风险。
HMAC输出长度由底层Hash算法决定:
MD5 --> 128 bits
SHA1 --> 160 bits
SHA256 --> 256 bits
Java 中有 Mac 类专门用来处理这样的需求,一般流程:
getInstance(包含 HmacMD5、HmacSHA1、HmacSHA256) --> init key --> update --> doFinal
Mac mac = Mac.getInstance("HmacMD5"); byte[] key = "imsS49kraapnUH0Z".getBytes(); Key secKey = new SecretKeySpec(key, "HmacMD5"); mac.init(secKey); mac.update("来自hehe的问候".getBytes(StandardCharsets.UTF_8)); byte[] hmacBytes = mac.doFinal();
python3 对应的是 hmac 库,一般流程
hmac.new(key, hash算法) --> update --> digest
plain_bytes = '来自hehe的问候'.encode('utf-8') key = b'imsS49kraapnUH0Z' mac_op = hmac.new(key, digestmod=hashlib.md5) mac_op.update(plain_bytes) hex_str = mac_op.hexdigest()
由于MAC算法加入了key要素,那么在确保key和发送者一一对应的前提下,MAC同时具备了确保数据的完整性[Integrity], 和身份验证[Authentication]的功能。
相关推荐
在现代化铁路通信和信号系统中,消息认证码(MAC)算法发挥着至关重要的作用,其安全性直接影响整个系统的可靠性和效率。本文着重探讨了铁路信号安全协议RSSP-Ⅱ中的消息认证码(MAC)算法,并对MASL-TDES-MAC算法...
支持MD5、SHA1、SHA224、SHA256、SHA384、SHA512等摘要算法,分别称为HMAC- MD5、HMAC-SHA1、HMAC-SHA224、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512。 支持String(文本)、Hex(十六进制)、Base64等多种数据格式。
与摘要算法类似,通过加入BouncyCastle库可以调用更多算法,使用也类似:
- **算法特点**:SM3是一种杂凑算法,主要用于数字签名和验证、消息认证码生成与验证以及随机数生成等。SM3算法的输出长度为256位,相较于MD5(128位)和SHA-1(160位)算法,SM3提供了更高的安全性。 - **应用场景*...
- **消息认证码生成**: 该阶段负责生成消息认证码,以验证数据的完整性和来源的真实性。 ### 结论 ZUC-256流密码算法作为ZUC-128的升级版本,不仅在安全性方面有了显著提升,而且在功能上更加灵活多样。通过引入...
在此部分中,算法利用消息认证码(MAC)或哈希函数,生成能够验证数据完整性和真实性的唯一校验值。这种创新性的应用方法,不仅提供了高强度的加密保护,还能够在数据被篡改时及时发现,从而为用户提供了额外的安全...
基于SM2密码算法的证书认证系统密码及其相关安全技术规范
消息认证涉及三种主要操作:消息加密、消息认证码(MAC)和散列函数。这些技术结合使用,能有效防止网络环境中的各种攻击,如信息泄露、流量分析、伪装、内容篡改、顺序篡改、计时篡改以及信源和信宿的抵赖。 首先...
在实验中,我们输入了8个字符(代表64位)的密钥“12345678”,对明文进行了加密和解密,验证了DES算法的正确性。DES虽然历史悠久,但由于其密钥长度相对较短,现在已被更安全的AES(Advanced Encryption Standard)...
密码杂凑算法,如SM3,将任意长度的输入转化为固定长度的摘要,用于数据完整性检查和消息鉴别。SM3算法已广泛应用于智能电网和金融系统,如智能电表和银行密码芯片卡,确保数据的完整性和安全性。 在网络安全等级...
常见的密码算法有对称加密(如DES、AES)、非对称加密(如RSA、ECC)、哈希函数(如MD5、SHA-1)和消息认证码(如HMAC)。这些算法在数字签名、数据传输安全、身份验证等场景中发挥着重要作用。 该软件的"操作简单...
* 适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。 * 为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短。 * 例如MD5输出128比特杂凑值,...
公开密钥密码算法,也称为非对称加密算法,是现代信息安全领域中的核心概念,它在数字签名、安全通信和身份认证等方面发挥着至关重要的作用。这种加密方式使用一对密钥,一个用于加密,另一个用于解密,这对密钥彼此...
5. **加密算法**:加密过程中,每个字符的ASCII码通过公式`C ≡ (M + K) mod 26`进行转换,其中模26的操作确保了结果始终在字母a~z的范围内。 #### 五、实验步骤与内容 1. **编写程序**:实验要求编写一个程序来...
算法的核心是轮操作,每一轮都包括消息扩散和非线性变换两个阶段。 消息扩散阶段通常涉及矩阵的行或列操作,如旋转和XOR运算,以传播消息中的信息。非线性变换则通过复杂的函数确保算法的安全性,这些函数通常是...
消息鉴别码(Message Authentication Code,简称MAC)是一种用于验证数据完整性和发送者身份的密码学技术。在网络安全中,MAC算法扮演着至关重要的角色,它能够确保数据在传输过程中未被篡改,并且确保信息来源的...
一、实验目的 通过实验熟练掌握凯撒密码算法,学会凯撒密码算法程序设计,提高C++程序设计能力。 二、实验要求 (1)输入:任意的一段明文 ...(3)要求有对应的程序调试记录和验证记录 三、实验原理(流程图):
消息认证码 杂凑函数 MD5杂凑算法 安全杂凑算法 HMAC的安全性
密码杂凑算法是信息安全领域中的核心概念,它们在保护数据完整性和验证消息来源方面发挥着至关重要的作用。简而言之,密码杂凑算法是一种单向函数,它将任意大小的输入(消息)转换为固定长度的输出(杂凑值或摘要)...
AES-CMAC(Advanced Encryption Standard - Cipher-based Message Authentication Code)是一种基于AES加密标准的消息认证码算法,主要用于确保数据的完整性和来源的真实性。CMAC是CBC-MAC(Cipher Block Chaining -...