HMAC-MD5 签名算法

本文介绍HMAC-MD5签名算法用于确保数据传输的安全性,详细阐述了算法原理及实现流程,包括密钥填充、异或运算、MD5散列等步骤,同时提到了HMAC-MD5的检验工具。
摘要由CSDN通过智能技术生成

防止数据在传输过程被篡改,使用HMAC-MD5 签名算法校验数据。

HMAC-MD5算法

HMAC(K,M)=H(K⊕opad∣H(K⊕ipad∣M))

其中:K是密钥(OperatorSecret),长度可为64字节,若小于该长度,在密钥后面用“0”补齐。

     M是消息内容;

     H是散列函数;

     opad和Ipad分别是由若干个0x5c和0x36组成的字符串;

     ⊕表示异或运算;

     ∣表示连接操作。

2)HMAC-MD5流程

1) 在签名密钥(SigSecret)后面添加0来创建一个长为64字节的字符串(str);

2) 将上一步生成的字符串(str)与ipad(0x36)做异或运算,形成结果字符串(istr);

3)将消息内容data附加到第二步的结果字符串(istr)的末尾;

4)做md5运算于第三步生成的数据流(istr);

5) 将第一步生成的字符串(str)与opad(0x5c)做异或运算,形成结果字符串(ostr);

6)再将第四步的结果(istr)附加到第五步的结果字符串(ostr)的末尾;

7)做md5运算于第六步生成的数据流(ostr),输出最终结果(out)。

HMAC-MD5检验工具

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
* @Title: HMacMD5Util
* @Description: HMacMD5 数据签名
* @author chy
* @date 2018/6/11 15:32
*/
public class HMacMD5Util {

    /**
     * 计算参数的md5信息
     *
     * @param str 待处理的字节数组
     * @return md5摘要信息
     * @throws NoSuchAlgorithmException
     */
    private static byte[] md5(byte[] str) throws NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(str);
        return 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值