消息认证码算法的产生一定程度上是因为,处于安全考虑很多人已经开始在做消息摘要之前,先对原始的消息加上一个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]的功能。
相关推荐
铁路信号安全协议中消息认证码算法的研究.pdf
与摘要算法类似,通过加入BouncyCastle库可以调用更多算法,使用也类似:
消息认证码 杂凑函数 MD5杂凑算法 安全杂凑算法 HMAC的安全性
基于SM2密码算法的证书认证系统密码及其相关安全技术规范
代码实现了SM2算法(国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法)。包含验证算法。SM2算法和RSA算法都是公钥密码算法SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。
相关标准为“GM/T 0004-2012 《SM3密码杂凑算法》”。...在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开。据国家密码管理局表示,其安全性及效率与SHA-256相当。
对使用混合密码算法的端到端加密短消息服务(SMS)进行设计和实现的研究的动机是,在移动设备上的短消息服务(SMS)期间观察到的数据的高度不安全性。 SMS消息是流行的通信方式之一。 因此,目的是设计一种用于...
基于消息认证码与逐跳追溯的确定包标记算法1
国家密码管理局颁布的t椭圆曲线密码算法SM2的全套资料,包括数据加解密、消息签名验证的标准和测试向量,以及必备的基础知识。
力,本篇主要介绍在移动通信发展过程中认证算法及其使用方法的变化历程。 每谈到移动通信网的安全问题,首先蹦出来的几个词肯定是“复制卡”、“伪基站”、“电信诈 骗”、“垃圾短信”、“改号”……其实这些问题或...
描述日本JCMVP如何开展对称密码算法的符合性测试,实例详细,对准备进行FIPS认证的公司有很大帮助。
第4部分——公钥加密算法:适用于商用密码应用中的消息加解密,消息发送者可以利用接收者的公钥对消息进行加密,接收者用对应的私钥进行解密; 第2部分、第3部分和第4部分都可为安全产品生产商提供产品和技术的标准...
基于判定型双线性Diffie-Hellman问题,提出了一个高效、短公/私钥长度、强安全的,基于对称加密算法、消息认证码算法、密钥分割算法等基础算法的一次一密型混合加密方案,分析了方案的安全性和效率。方案在标准模型...
全人9章,分别论述了ASN.1编码、随机数生成、高级加密标准、散列函数、消息认证码算法、加密和认证模式、大整数算术以及公钥算法等内容。书中每一章都深层次地讨论了内存、大小与速度性能上的权衡,也讨论了这些特定...
本文本适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。同时,本文本还可为安全产品生产商提供产品和技术的标准定位以及标准化的参考,提高安全产品...
SMAE是一种单程专用的认证加密算法,通过将认证码的生成模块与SM4的轮函数结合,并改进了加密模块,使得算法在初始化阶段、加密阶段以及认证码生成阶段可以共享数据和部分算法,最大程度地减少计算资源消耗。...
DigestAlgorithmIdentifier类型标明一个消息摘要算法,夲规范为SM3算法,其OID见GM/ T0006。 DigestAlgorithmIdentifier : AlgorithmIdentifier 6. 4 DigestEncryptionAlgorithmIdentifier Digest Encryption ...