Bootstrap

MySQl数据库配合java做加密处理

在看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]; 
    } 

大量手写的代码,也许应该有库函数的直接使用,也就是更加简单的方法。

;