`
xuanzhui
  • 浏览: 200827 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

消息认证码算法

阅读更多

消息认证码算法的产生一定程度上是因为,处于安全考虑很多人已经开始在做消息摘要之前,先对原始的消息加上一个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]的功能。

 

 

 sample

 

 

 

 

分享到:
评论

相关推荐

    铁路信号安全协议中消息认证码算法的研究.pdf

    本文主要探讨了铁路信号安全协议RSSP-Ⅱ中消息认证码(MAC)算法的研究与优化,旨在提升协议的安全性和实时性。传统的MAC算法MASL-TDES-MAC使用的是Triple DES加密算法,但鉴于其安全性相对较弱,研究人员将其底层...

    消息认证码算法的OpenSSL代码实现Demo

    支持MD5、SHA1、SHA224、SHA256、SHA384、SHA512等摘要算法,分别称为HMAC- MD5、HMAC-SHA1、HMAC-SHA224、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512。 支持String(文本)、Hex(十六进制)、Base64等多种数据格式。

    looly#hutool-site#消息认证码算法-HMac1

    与摘要算法类似,通过加入BouncyCastle库可以调用更多算法,使用也类似:

    国产密码算法介绍

    - **算法特点**:SM3是一种杂凑算法,主要用于数字签名和验证、消息认证码生成与验证以及随机数生成等。SM3算法的输出长度为256位,相较于MD5(128位)和SHA-1(160位)算法,SM3提供了更高的安全性。 - **应用场景*...

    祖冲之序列密码算法.zip

    这部分可能涉及消息认证码(MAC)或哈希函数的使用,结合祖冲之序列密码生成唯一的校验值,用于验证数据的完整性和真实性。祖冲之算法在这一层面上的应用可能展示了一种创新的方法,既能提供高强度的加密,又能有效...

    ZUC祖冲之密码算法

    - **消息认证码生成**: 该阶段负责生成消息认证码,以验证数据的完整性和来源的真实性。 ### 结论 ZUC-256流密码算法作为ZUC-128的升级版本,不仅在安全性方面有了显著提升,而且在功能上更加灵活多样。通过引入...

    消息认证及其算法消息认证及其算法.pdf

    消息认证涉及三种主要操作:消息加密、消息认证码(MAC)和散列函数。这些技术结合使用,能有效防止网络环境中的各种攻击,如信息泄露、流量分析、伪装、内容篡改、顺序篡改、计时篡改以及信源和信宿的抵赖。 首先...

    实验一 对称密码算法和非对称密码算法.docx

    在实验中,我们输入了8个字符(代表64位)的密钥“12345678”,对明文进行了加密和解密,验证了DES算法的正确性。DES虽然历史悠久,但由于其密钥长度相对较短,现在已被更安全的AES(Advanced Encryption Standard)...

    《典型密码算法FPGA实现》配套源程序,FPGA解密,C,C++

    总的来说,这个配套源程序提供了深入研究FPGA密码学实现的机会,包括但不限于理解和优化算法的硬件结构,熟悉HDL编程,以及掌握如何在实际项目中集成和验证这些实现。通过实践,开发者可以提升自己的硬件设计技能,...

    关于密码算法及等保相关的密码.docx

    密码杂凑算法,如SM3,将任意长度的输入转化为固定长度的摘要,用于数据完整性检查和消息鉴别。SM3算法已广泛应用于智能电网和金融系统,如智能电表和银行密码芯片卡,确保数据的完整性和安全性。 在网络安全等级...

    密码算法测试软件(完整版)

    常见的密码算法有对称加密(如DES、AES)、非对称加密(如RSA、ECC)、哈希函数(如MD5、SHA-1)和消息认证码(如HMAC)。这些算法在数字签名、数据传输安全、身份验证等场景中发挥着重要作用。 该软件的"操作简单...

    公开密钥密码算法及其快速实现

    公开密钥密码算法,也称为非对称加密算法,是现代信息安全领域中的核心概念,它在数字签名、安全通信和身份认证等方面发挥着至关重要的作用。这种加密方式使用一对密钥,一个用于加密,另一个用于解密,这对密钥彼此...

    凯撒密码算法实验

    5. **加密算法**:加密过程中,每个字符的ASCII码通过公式`C ≡ (M + K) mod 26`进行转换,其中模26的操作确保了结果始终在字母a~z的范围内。 #### 五、实验步骤与内容 1. **编写程序**:实验要求编写一个程序来...

    JH密码算法的C语言实现

    算法的核心是轮操作,每一轮都包括消息扩散和非线性变换两个阶段。 消息扩散阶段通常涉及矩阵的行或列操作,如旋转和XOR运算,以传播消息中的信息。非线性变换则通过复杂的函数确保算法的安全性,这些函数通常是...

    java SM3密码杂凑算法(哈希算法)

    * 适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。 * 为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短。 * 例如MD5输出128比特杂凑值,...

    消息鉴别码MAC算法编程源代码

    消息鉴别码(Message Authentication Code,简称MAC)是一种用于验证数据完整性和发送者身份的密码学技术。在网络安全中,MAC算法扮演着至关重要的角色,它能够确保数据在传输过程中未被篡改,并且确保信息来源的...

    密码学 凯撒密码算法实验C语言

    一、实验目的 通过实验熟练掌握凯撒密码算法,学会凯撒密码算法程序设计,提高C++程序设计能力。 二、实验要求 (1)输入:任意的一段明文 ...(3)要求有对应的程序调试记录和验证记录 三、实验原理(流程图):

    基于SM2密码算法的证书认证系统密码及其相关安全技术规范.p

    基于SM2密码算法的证书认证系统密码及其相关安全技术规范

    消息认证和杂凑算法

    消息认证码 杂凑函数 MD5杂凑算法 安全杂凑算法 HMAC的安全性

    密码杂凑算法综述.pdf

    密码杂凑算法是信息安全领域中的核心概念,它们在保护数据完整性和验证消息来源方面发挥着至关重要的作用。简而言之,密码杂凑算法是一种单向函数,它将任意大小的输入(消息)转换为固定长度的输出(杂凑值或摘要)...

Global site tag (gtag.js) - Google Analytics