加密初步(一)

public class EncodeUtil {
    private static MessageDigest instance = null;
    private static char hexDigits[] = new char[]{'0','1','2','3','4','5','6','7','8','9',
        'a','b','c','d','e','f'};// 用来将字节转换成16进制表示的字符  
    public static String Md5Encode(String src){
        String result = null;
        byte[] source = src.getBytes();
        MessageDigest md = getMessageDigest();
        md.update(source);
        byte[] digest = md.digest();// MD5 的计算结果是一个 128 位的长整数,  用字节表示就是 16 个字节 
        char[] str = new char[16*2];// 每个字节用 16 进制表示的话,使用两个字符, 所以表示成 16进制需要 32 个字符  
        StringBuffer strBuf = new StringBuffer(16*2);
        int index = 0;// 表示转换结果中对应的字符位置
        for(int i=0;i<16;i++){// 从第一个字节开始,对 MD5 的每一个字节 转换成 16进制字符的转换
            byte temp = digest[i];// 取第 i 个字节  
            
        //    str[index++] = hexDigits[temp>>>4&0xf];// 取字节中高 4 位的数字转换,// >>>  为逻辑右移,将符号位一起右移  
        //    str[index++] = hexDigits[temp&0xf];// 取字节中低 4 位的数字转换  
            strBuf.append(hexDigits[temp>>>4&0xf]).append(hexDigits[temp&0xf]);
        }
        //result = new String(str).toUpperCase();
        result = strBuf.toString().toUpperCase();
        return result;
    }
    private static MessageDigest getMessageDigest(){
        try {
            if(instance==null){
                instance = MessageDigest.getInstance("MD5");
            }
        } catch (Exception e) {
            System.out.println("--getMessageDigest--Error");
        }
        return instance;
    }
}


你可能感兴趣的:(java,加密)