java mac.dofinal_java中消息摘要算法mac的实现

java中消息摘要算法mac的实现

jdk中mac的实现

package hmac;

import javax.crypto.KeyGenerator;

import javax.crypto.Mac;

import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Hex;

public class HmacMD5Jdk {

public static void main(String[] args) throws Exception{

String source = "test";

/**随机产生秘钥或者指定秘钥 */

//随机产生秘钥

KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5");

byte[] key =keyGenerator.generateKey().getEncoded();

//或者去指定秘钥

key = "aaaaa".getBytes();

Mac mac = Mac.getInstance("HmacMD5");

mac.init(new SecretKeySpec(key, "HmacMD5"));

mac.update(source.getBytes());

System.out.println(Hex.encodeHexString(mac.doFinal()));

}

}

bc(boucy castle)中mac的实现:

package hmac;

import org.bouncycastle.crypto.digests.MD5Digest;

import org.bouncycastle.crypto.macs.HMac;

import org.bouncycastle.crypto.params.KeyParameter;

import org.bouncycastle.util.encoders.Hex;

public class HmacMD5Bc {

public static void main(String[] args) {

String source = "test";

HMac hmac = new HMac(new MD5Digest());

hmac.init(new KeyParameter("aaaaa".getBytes()));

hmac.update(source.getBytes(), 0, source.getBytes().length);

byte[] resultBytes = new byte[hmac.getMacSize()];

hmac.doFinal(resultBytes, 0);

System.out.println(Hex.toHexString(resultBytes));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于 JavaMac实现 HMAC-MD5 算法的示例代码: ```java import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Base64; public class HmacMd5 { public static void main(String[] args) { String message = "Hello, world!"; String key = "secret"; String hmac = hmacMd5(message, key); System.out.println(hmac); } public static String hmacMd5(String message, String key) { try { // 创建 Mac 对象 Mac mac = Mac.getInstance("HmacMD5"); // 创建 SecretKeySpec 对象 SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "HmacMD5"); // 初始化 Mac 对象 mac.init(keySpec); // 计算 HMAC 值 byte[] hmacBytes = mac.doFinal(message.getBytes()); // 对 HMAC 值进行 Base64 编码 return Base64.getEncoder().encodeToString(hmacBytes); } catch (NoSuchAlgorithmException | InvalidKeyException e) { e.printStackTrace(); return null; } } } ``` 在示例代码,我们通过调用 `hmacMd5` 方法来计算 HMAC-MD5 值。该方法接受两个参数:`message` 表示要计算 HMAC 值的消息,`key` 表示 HMAC 密钥。在方法内部,我们首先创建 Mac 对象,然后创建 SecretKeySpec 对象,并使用 HMAC 密钥初始化 Mac 对象。接着,我们调用 Mac 对象的 `doFinal` 方法来计算 HMAC 值,并将其转换为 Base64 编码的字符串返回。最后,在 `main` 方法,我们演示了如何使用该方法来计算 HMAC-MD5 值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值