JAvaパスワード暗号化--MD 5および異種暗号化


一般的なパスワードは明文を直接保存することはできませんが、現在よく使われているパスワード暗号化方式はMD 5暗号化です.
MD 5暗号化は現在不可逆的であるが,md 5を解読する方法が多く,md 5に移行する前に一度処理することができる.
処理の構想は多種多様である
方法1は、ユーザーパスワードに私たち自身の公開鍵を加えることができます.
例えばユーザパスワードは123
私たちの公開鍵はabcです.
abc 123 md 5を暗号化してライブラリに入れます
ユーザがmd 5を解読してもabc 123にすぎない
パスワードボックスにabc 123を入力してもエラーは発生しますか?
方式2ユーザのパスワード上で異種または暗号化または対応する変換再md 5暗号化を行う
例えばユーザパスワードは123
私はそれを異種または暗号化してEFGを得た.
EFGをmd 5暗号化してライブラリに入れます
ユーザがmd 5を解読して得たのはEFGのみである
パスワードボックスにEFGを入力してもエラーは発生しません
だから処理の仕方はいろいろある.
ここでは、方式2の完全なコードを示します.
package service;

import java.security.MessageDigest;

/** 
 *   MD5     
 * @author zzq 
 * @datetime 2014-11-26 
 */  
public class MD5Util {
	/*** 
     * MD5     32 md5  
     */  
    public static String string2MD5(String inStr){  
        MessageDigest md5 = null;  
        try{  
            md5 = MessageDigest.getInstance("MD5");  
        }catch (Exception e){  
            System.out.println(e.toString());  
            e.printStackTrace();  
            return "";  
        }  
        char[] charArray = inStr.toCharArray();  
        byte[] byteArray = new byte[charArray.length];  
  
        for (int i = 0; i < charArray.length; i++)  
            byteArray[i] = (byte) charArray[i];  
        byte[] md5Bytes = md5.digest(byteArray);  
        StringBuffer hexValue = new StringBuffer();  
        for (int i = 0; i < md5Bytes.length; i++){  
            int val = ((int) md5Bytes[i]) & 0xff;  
            if (val < 16)  
                hexValue.append("0");  
            hexValue.append(Integer.toHexString(val));  
        }  
        return hexValue.toString();  
  
    }  
  
    /** 
     *              ,     
     */   
    public static String convert(String inStr){  
  
        char[] a = inStr.toCharArray();  
        for (int i = 0; i < a.length; i++){  
            a[i] = (char) (a[i] ^ 't');  
        }  
        String s = new String(a);  
        return s;  
  
    }  
  
    //        
    public static void main(String args[]) {  
        String s = new String("123");  
        System.out.println("  :" + s);  
        System.out.println("MD5 :" + string2MD5(s));  
        System.out.println("     :" + convert(s));  
        System.out.println("     :" + convert(convert(s))); 
        
        
        //    ---      MD5
        String nows = new String("123");  
        System.out.println("  :" + nows);  
        System.out.println("     :" + string2MD5(convert(nows)));  
        
        
        
  
    }  
}