一、Base64
主要用于Byte数组 和字符串之间的转换。
在rt.jar 里的sun.misc里的两个类很常用BASE64Encoder 和 BASE64Decoder
final BASE64Encoder encoder = new BASE64Encoder();
final BASE64Decoder decoder = new BASE64Decoder();
final String text = "hello world. 你好世界";
final byte[] textByte = text.getBytes("UTF-8");
//编码
final String encodedText = encoder.encode(textByte);
System.out.println(encodedText);
//解码
System.out.println(new String(decoder.decodeBuffer(encodedText), "UTF-8"));
二、MD5
可以用于byte[] 之间的转换
可以使用spring里 org.springframework.util包下的DigestUtils,也可以使用jdk里sercurity包内置的DigestUtils
import java.security.MessageDigest;
System.out.println(new String(DigestUtils.md5Digest(textByte)));
import org.springframework.util.DigestUtils;
String s = DigestUtils.md5DigestAsHex(text.getBytes("UTF-8"));
具体实现逻辑请参考MD5实现过程,
需要先填充数据对512取余,然后算哈希值,还要找非线性函数做映射,循环的加工最后一拼接,很复杂的不可逆算法。
因此 MD5不可解密。