java BASE64 和 MD5 加密解密

参考文章:
Java1.8实现Base64编码解码
MD5和Base64
加密算法中BASE64、MD5、SHA、HMAC等之间的区别
Java加密算法

两者不同:
Base64

  • 可逆性。
  • 可以将任意的二进制数据转换为文本文件。
  • 可以把非ASCII字符的数据转换成ASCII字符,避免不可见字符。

MD5

  • 不可逆性。
  • 任意长度的明文字符串,加密后得到的密文字符串是长度固定的(32位)。

MD5、SHA、HMAC —单向加密算法

BASE64

package base64;

import java.io.UnsupportedEncodingException;
import java.util.Base64;

/**
 * @Description TODO
 * @Author YZQ 2020/7/18 15:04
 */
public class BASE64Util {
  /**
   * 使用Base64进行编码
   *
   * @param encodeContent 需要编码的内容
   * @return 编码后的内容
   */
  public static String encode(String encodeContent) throws UnsupportedEncodingException {
    if (encodeContent == null) {
      return null;
    }
    return  Base64.getEncoder().encodeToString(encodeContent.getBytes("UTF-8"));
  }

  /**
   * 使用Base64进行编码
   *
   * @param encodeText 需要编码的内容
   * @return 编码后的内容
   */
  public static String encode(byte[] encodeText) throws UnsupportedEncodingException {
    return encode(new String(encodeText));
  }

  /**
   * 使用Base64进行解码
   *
   * @param decodeContent 需要解码的内容
   * @return 解码后的内容
   */
  public static String decode(String decodeContent) throws UnsupportedEncodingException {
    byte[] bytes = null;
    if (decodeContent == null) {
      return null;
    }
	//处理url  用Base64.getUrlDecoder()  Base64.getUrlEecoder()
    bytes = Base64.getDecoder().decode(decodeContent);

    return new String(bytes,"UTF-8");
  }

  public static void main(String[] args) throws UnsupportedEncodingException {
    System.out.println(encode("nihao"));
    System.out.println(decode("bmloYW8="));
  }
}

BASE加密后产生的字节位数是8的倍数,如果不够位数以=符号填充。
在这里插入图片描述
MD5

package md5;

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

public class MD5Util {

  public static String getDigest(String plainText) {
    byte[] secretBytes = null;
    try {
      secretBytes = MessageDigest.getInstance("md5").digest(plainText.getBytes());
    } catch (NoSuchAlgorithmException e) {
      throw new RuntimeException("error happens", e);
    }
    return new BigInteger(1, secretBytes).toString(16);
  }

  public static void main(String[] args) {
    System.out.println(getDigest("nihao"));
  }
}

测试

  public static void main(String[] args) throws UnsupportedEncodingException {
    String encodePassword = MD5Util.getDigest(BASE64Util.encode("nihao"));
    System.out.println(encodePassword);
  }

在这里插入图片描述
MessageDigest在构造的时候,可以传入一个算法,按照指定算法进行加密。
支持的算法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值