JDK安全算法包装(MD5 、RSA、 AES、国密SM系列)

本文介绍了JDK中支持的安全算法,包括MD5摘要、RSA加解密、AES加解密的实现,并提及了即将支持的国密SM2、SM3、SM4算法。同时,提供了一个SecurityUtil工具包的封装,用于实际应用场景案例。
摘要由CSDN通过智能技术生成

前言

目前jdk支持主流的安全算法包括但不限于:md5、rsa、aes、……

程序实现

这里主要提供了MD5 、RSA、 AES的程序实现

  • md5摘要
  • rsa加解密(hex),及密钥生成(base64)
  • aes加解密,及密钥生成
  • 后续支持国密 SM2、SM3、SM4实现

SecurityUtil工具包封装

@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class SecurityUtil {
   

    private static final String MD5 = "MD5";
    private static final String saltValue = "MASTER";
    private static final String RSA = "RSA";
    private static final String AES = "AES";
    public static final Base64.Encoder encoderBase64 = Base64.getEncoder();
    public static final Base64.Decoder decoderBase64 = Base64.getDecoder();

    public static String MD5EncryptAsHex(String plainText) {
   
        try {
   
            MessageDigest alg = MessageDigest.getInstance(MD5);
            String message = String.join("_", saltValue, plainText);
            byte[] encryptBytes = alg.digest(message.getBytes(StandardCharsets.UTF_8));
            return Hex.encodeHexString(encryptBytes);
        } catch (NoSuchAlgorithmException e) {
   
            return null;
        }
    }

    public static String RSAPublicKeyEncryptAsHex(String plainText, String publicKey) {
   
        try {
   

            PublicKey rsaPublicKey = Objects.requireNonNull(toRSAPublicKey(publicKey), "无效密钥");
            Cipher cipher = Cipher.getInstance(RSA);
            cipher.init(Cipher.ENCRYPT_MODE, rsaPublicKey);
            byte[] bytes = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
            return Hex.encodeHexString(bytes);
        } catch (Exception ignore) {
   
            return null;
        }
    }

    public static String RSAPrivateKeyEncryptAsHex(String plainText
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值