Java: hash & HMAC

 

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Ruzz{
  public static void main(String[] args) throws NoSuchAlgorithmException{
    System.out.println(sha256("ruzz"));
  }

  public static String sha256(String data){
    if(data == null)
      throw new NullPointerException("data is null");

    try{
      MessageDigest messageDigest = MessageDigest.getInstance("sha256");
      byte[] bytes = messageDigest.digest(data.getBytes(StandardCharsets.UTF_8));
      StringBuilder result = new StringBuilder();
      for(byte aByte : bytes){
        String hexString = Integer.toHexString(aByte & 0xFF);
        if(hexString.length() == 1)
          hexString = hexString + '0';
        result.append(hexString);
      }
      return result.toString();
    }catch(NoSuchAlgorithmException e){
      e.printStackTrace();
    }
    return null;
  }

}

 

 

package io.wig;


import cn.hutool.crypto.digest.HMac;
import cn.hutool.crypto.digest.HmacAlgorithm;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Ruzz{
  public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException{
    String str="fozy";
    byte[] key = "cozy".getBytes(StandardCharsets.UTF_8);

    SecretKeySpec secretKeySpec = new SecretKeySpec(key, "HmacMD5");
    Mac mac = Mac.getInstance("HmacMD5");
    mac.init(secretKeySpec);
    mac.update(str.getBytes(StandardCharsets.UTF_8));
    byte[] bytes = mac.doFinal();

    String s = new BigInteger(1, bytes).toString(16);
    System.out.println("s = " + s);
    //
    // String s1 = new BigInteger(bytes).toString(16);
    // System.out.println("s1 = " + s1);

    StringBuilder stringBuilder = new StringBuilder();
    for(byte aByte : bytes){
      String string = Integer.toHexString(aByte & 0xFF);
      if(string.length()==1)
        string='0'+string;
      stringBuilder.append(string);
    }
    System.out.println("stringBuilder = " + stringBuilder);
    HMac hMac = new HMac(HmacAlgorithm.HmacMD5, key);
    System.out.println(hMac.digestHex(str));

  }
}

 

 

 

posted @ 2022-04-21 22:10  ascertain  阅读(243)  评论(0编辑  收藏  举报