在看mysql的函数,看到加密算法。
https://www.cnblogs.com/zj0208/p/7682791.html
select md5("123");
md5和sha加密是不可逆的,大概是不能破解,真好。
然后java怎么验证呢,总不可能是用户输入,MySQL数据库读取加密之后用条件判断去验证吧,感觉是可以做的;
于是想找找java-md5加密。之后字符串类型比较。还好找到了。
https://www.cnblogs.com/solove/archive/2011/10/18/2216715.html
代码如下
import java.security.MessageDigest;
public class Encript {
//十六进制下数字到字符的映射数组
private final static String[] hexDigits = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
public static void main(String[] args) {
String pass=encodeByMD5("123");
System.out.println(pass);
String passMysql="202cb962ac59075b964b07152d234b70".toUpperCase();
if(pass.equals(passMysql)){
System.out.println(true);
}else{
System.out.println(false);
}
}
/**对字符串进行MD5编码*/
private static String encodeByMD5(String originString){
if (originString!=null) {
try {
//创建具有指定算法名称的信息摘要
MessageDigest md5 = MessageDigest.getInstance("MD5");
//使用指定的字节数组对摘要进行最后更新,然后完成摘要计算
byte[] results = md5.digest(originString.getBytes());
//将得到的字节数组变成字符串返回
/*StringBuffer by=new StringBuffer();
for(int i=0;i<results.length;i++)
{
by.append(results[i]);
}
System.out.println(by.toString()+"---mybts----");*/
String result = byteArrayToHexString(results);
return result;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
/**
* 轮换字节数组为十六进制字符串
* @param b 字节数组
* @return 十六进制字符串
* 202cb962ac59075b964b07152d234b70
* 202CB962AC59075B964B07152D234B70
*/
private static String byteArrayToHexString(byte[] b){
StringBuffer resultSb = new StringBuffer();
for(int i=0;i<b.length;i++){
resultSb.append(byteToHexString(b[i]));
}
return resultSb.toString();
}
//将一个字节转化成十六进制形式的字符串
private static String byteToHexString(byte b){
int n = b;
if(n<0)
n=256+n;
int d1 = n/16;
int d2 = n%16;
return hexDigits[d1] + hexDigits[d2];
}
}
大量手写的代码,也许应该有库函数的直接使用,也就是更加简单的方法。