【JAVA基础】Java中常用加密算法的使用方法

简单的 Java 加密算法有

  • BASE64 严格地说,属于编码格式,而非加密算法
  • MD5(Message Digest algorithm 5,信息摘要算法)
  • SHA(Secure Hash Algorithm,安全散列算法)
  • HMAC(Hash Message Authentication Code,散列消息鉴别码)

talk is cheap, show me the code.

TestEncrypt

import lombok.extern.slf4j.Slf4j;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.math.BigInteger;
import java.security.MessageDigest;

/**
 * @description:
 * @author: tanpeng
 * @date: 2020-03-24 12:12
 * @version: v1.0.0
 */
@Slf4j
public class TestEncrypt {

    private static String CHARSET_UTF8 = "UTF-8";
    private static int RADIX_16 = 1<<4;
    private static int RADIX_32 = 1<<5;

    public static void main(String[] args) throws Exception {
        String plaintext = "123456";
        byte[] plaintextByteArray = plaintext.getBytes(CHARSET_UTF8);
        byte[] slatByteArray = "slat".getBytes(CHARSET_UTF8);

        System.out.println("=================================== BASE64 ===================================");

        String base64Encode = new BASE64Encoder().encode(plaintextByteArray);
        byte[] base64Decode = new BASE64Decoder().decodeBuffer(base64Encode);
        log.info("Base64 encode {}", base64Encode);
        log.info("Base64 decode {}", new String(base64Decode, CHARSET_UTF8));

        System.out.println("=================================== MD5 ===================================");

        MessageDigest md5 = MessageDigest.getInstance("MD5");
        md5.update(plaintextByteArray);
        byte[] md5Encode = md5.digest(); // 调用digest方法后会重置状态为 INITIAL
        String md5MessageDigest = new BigInteger(md5Encode).toString(RADIX_16);
        log.info("MD5 encode {}", md5MessageDigest);

        md5.update(plaintextByteArray);
        md5.update(slatByteArray);
        log.info("MD5 slat encode {}", new BigInteger(md5.digest()).toString(RADIX_16));

        md5.update(plaintextByteArray);
        md5.update(slatByteArray);
        log.info("MD5 slat encode {}", new BigInteger(md5.digest()).toString(RADIX_16));

        System.out.println("=================================== SHA-1 ===================================");

        MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
        sha1.update(plaintextByteArray);
        log.info("SHA-1 encode {}", new BigInteger(sha1.digest()).toString(RADIX_32));

        sha1.update(plaintextByteArray);
        sha1.update(slatByteArray);
        log.info("SHA-1 slat encode {}", new BigInteger(sha1.digest()).toString(RADIX_32));

        sha1.update(plaintextByteArray);
        sha1.update(slatByteArray);
        log.info("SHA-1 slat encode {}", new BigInteger(sha1.digest()).toString(RADIX_32));

        System.out.println("=================================== SHA-256 ===================================");

        MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
        sha256.update(plaintextByteArray);
        log.info("SHA-256 encode {}", new BigInteger(sha256.digest()).toString(RADIX_32));

        sha256.update(plaintextByteArray);
        sha256.update(slatByteArray);
        log.info("SHA-256 slat encode {}", new BigInteger(sha256.digest()).toString(RADIX_32));

        sha256.update(plaintextByteArray);
        sha256.update(slatByteArray);
        log.info("SHA-256 slat encode {}", new BigInteger(sha256.digest()).toString(RADIX_32));

    }
}

参考

Java中4大基本加密算法解析

发布了106 篇原创文章 · 获赞 46 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/AV_woaijava/article/details/105069192