数字摘要算法的实现

73 阅读1分钟

概述

消息摘要算法为了防止篡改

常见的摘要加密算法

常见的摘要加密算法:MD5、sha1、sha256、sha512

代码实现

主要的是将二进制数组转为16进制

/**
 * 消息摘要算法为了防止篡改
 * 常见的加密算法:MD5、sha1、sha256、sha512
 * @param args
 * @throws NoSuchAlgorithmException
 */
public static void main(String[] args) throws NoSuchAlgorithmException {
    String input = "hello";
    //算法
    String algorithm = "MD5";
    String MD5 = getStringBuffer(algorithm, input);
    System.out.println("MD5="+MD5);

     algorithm = "sha1";
    String sha1 = getStringBuffer(algorithm, input);
    System.out.println("sha1="+sha1);

     algorithm = "sha256";
    String sha256 = getStringBuffer(algorithm, input);
    System.out.println("sha256="+sha256);

     algorithm = "sha512";
    String sha512 = getStringBuffer(algorithm, input);
    System.out.println("sha512="+sha512);
}

private static String  getStringBuffer(String algorithm, String input) throws NoSuchAlgorithmException {
    StringBuffer stringBuffer = new StringBuffer();
    //创建消息摘要算法
    MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
    //执行消息摘要算法
    byte[] digest = messageDigest.digest(input.getBytes(StandardCharsets.UTF_8));

    //对密文进行迭代
    for (byte b : digest) {
        //把密文转为16进制
        String hexString = Integer.toHexString(b & 0xff);
        stringBuffer.append(hexString);
    }
    return stringBuffer.toString();
}