MD5加密、Base64加密解密
以后可能经常用到MD5的加密类。写下来以后来用
public class MD5Util {
private MD5Util() {
}
//设置字符集
private static final String ENCODEONG = "UTF-8";
//增加盐值 salt 普通字符串 增加破译的难度
private static final String SALT="*&^%FIGHTEN*&6";
public static String encodeStr(String sourceStr) {
Objects.requireNonNull(sourceStr);
//创建信息摘要对象
MessageDigest messageDigest = null;
try {
//创建实例设置算法格式
messageDigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
//在加密之前增加盐值到字符串
sourceStr = sourceStr+SALT;
//将加密的字符串提交到messageDigest
messageDigest.update(sourceStr.getBytes(Charset.forName(ENCODEONG)));
//执行加密
byte[] digest = messageDigest.digest();
//将字节数组转换BigInteger(参数 -1转换成负数 0转换成0,1转换成正数)
BigInteger bigInteger = new BigInteger(1,digest);
//转换成16进制
String string = bigInteger.toString(16);
//将结果全部转换成大写
String result = string.toUpperCase();
return result;
}
public static void main(String[] args) {
String pass = "1234";
System.out.println(encodeStr(pass));
}
}
public class PassDemo {
private static final String ENCODING ="UTF-8";
public static void main(String[] args) {
// String pass = "你真好";
// String s = userRegister(pass);
// System.out.println(s);
String pass = "你真好";
boolean result = userLogin(pass);
System.out.println(result);
}
public static String userRegister(String sourcePass){
Objects.requireNonNull(sourcePass);
//Base64 编码 获得编码器
Base64.Encoder encoder = Base64.getEncoder();
//加密处理,设置编码格式ENCODING
String string = encoder.encodeToString(sourcePass.getBytes(Charset.forName(ENCODING)));
return string;
}
public static boolean userLogin(String sourecePass){
Objects.requireNonNull(sourecePass);
//模仿从后台数据库拿到的密码进行解密与sourecePass进行对比
String encodePass ="5L2g55yf5aW9";
//获得解码器
Base64.Decoder decoder = Base64.getDecoder();
//将密码放入解码器得到byte数组
byte[] decode = decoder.decode(encodePass);
//将byte数组转换成String并且配置编码格式
String decodePass = new String(decode,Charset.forName(ENCODING));
//将解密的String字符串和前台传来的字符串进行对比
if(!decodePass.endsWith(sourecePass)){
return false;
}
return true;
}
}