首页 > 编程知识 正文

Java加密技术(三)—— HMACSHA1 加密算法

时间:2023-05-04 05:28:32 阅读:16702 作者:3081

HMACSHA1是基于SHA1散列函数构建的密钥散列算法,用作基于散列的消息验证代码(HMAC )。 该HMAC进程将密钥与消息数据混合,使用散列函数对混合结果进行散列计算,将得到的散列值与密钥混合,然后再次应用散列函数。 输出的哈希值长度为160位。

在发件人和收件人共享私钥的情况下,可以使用HMAC来确定通过不安全通道发送的消息是否被篡改。 发送方计算原始数据的哈希值,将原始数据和哈希值放入一条消息中同时发送。 接收方重新计算接收到的消息的哈希值,并检查所计算的HMAC是否匹配于所发送的HMAC。

由于更改消息并重新生成正确的哈希值需要密钥,因此更改数据或哈希值时会发生不匹配。 因此,如果原始哈希值与计算出的哈希值匹配,则消息将被认证。

SHA-1 (也称为安全散列算法、SHS和安全散列标准)是美国政府发布的加密散列算法。 根据任意长度的字符串生成160位的哈希值。

HMACSHA1接受任意大小的密钥并生成长度为160位的哈希序列。

package com.hujl.oauth.signature; import javax.crypto.Mac; 导入javax.crypto.secret key; import javax.crypto.spec.secret key spec; publicclasshmacsha1{ privatestaticfinalstringmac _ name=' hmac sha1'; 私密性统计信息编码=' utf-8 '; /* *表示生成指定算法密钥的过程是HMAC密钥* @ return * @ throws exception * publicstaticstringinitmackey (throws exception )/指示初始化。获取指定算法密钥的密钥生成器keygeneratorkeygeneratorkeygeneratorkeygenerator=key generator.getinstance (MAC _ name ); //密钥secret key secret key=key generator.generate key (); 返回空值; } *//* * *在encrypt text上签名的字符串* @ param encrypt密钥* @ return * @ throws exception */public static byte [ ] hmac sha1 encrypt String encryptKey ) throws exception { byte [ ] data=encrypt key.gg//根据给定的字节数组创建密钥,第二个参数是密钥算法的名称secret key secrecer 生成指定//Mac算法的MAC对象的MAC=MAC.getinstance(MAC_name ); //使用给定密钥初始化Mac对象MAC.init(secretkey )的byte [ ] text=encrypt text.getbytes (encoding ); 完成//MAC操作的return MAC.do final (文本); }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。