`
xuanzhui
  • 浏览: 199564 次
  • 性别: 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)...

    关于密码算法及等保相关的密码.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运算,以传播消息中的信息。非线性变换则通过复杂的函数确保算法的安全性,这些函数通常是...

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

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

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

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

    消息认证和杂凑算法

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

    密码杂凑算法综述.pdf

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

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

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

    AES-CMAC算法c源码解析的pdf文档

    AES-CMAC(Advanced Encryption Standard - Cipher-based Message Authentication Code)是一种基于AES加密标准的消息认证码算法,主要用于确保数据的完整性和来源的真实性。CMAC是CBC-MAC(Cipher Block Chaining -...

    SM2椭圆曲线公钥密码算法

    代码实现了SM2算法(国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法)。包含验证算法。SM2算法和RSA算法都是公钥密码算法SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。

Global site tag (gtag.js) - Google Analytics