您的位置:首页 > 其它

MD5加密算法

2015-09-09 13:46 204 查看

MD5加密

用于md5加密的class

[code]import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5 {
    protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6',
            '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
    protected static MessageDigest messagedigest = null;
    static {
        try {
            messagedigest = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException nsaex) {
            nsaex.printStackTrace();
        }
    }
    /** 
     * @Title: encryptionPasswordToMD5 
     * @author zhzh
     * @date 
     * @version V1.0  
     * @Description: 通过MD5加密,并且字母转换成大写
     * @param : 
     * @return String
     * @throws 
     */ 
    public static String encryptionPasswordToMD5(String str){
        return toMD5(str).toUpperCase();
    }
    private static String toMD5(String s) {
        s = s == null ? "" : s;
        String strRet = null;
        try {
            byte[] strTemp = s.getBytes();
            messagedigest.update(strTemp);
            byte[] md = messagedigest.digest();
            int j = md.length;
            char str[] = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++) {
                byte b = md[i];
                str[k++] = hexDigits[b >>> 4 & 0xf];
                str[k++] = hexDigits[b & 0xf];
            }
            strRet = new String(str);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return strRet;
    }

    public static void main(String[] args) {
        System.out.println(toMD5("XSK0609.xjx"));
        System.out.println(encryptionPasswordToMD5("XSK0609.xjx"));
//      System.out.println(toMD5("1"));
//      System.out.println("admin:\t" + toMD5("admin"));
//      System.out.println("1:\t" + toMD5("1"));
//      System.out.println("123456:\t" + toMD5("123456"));
//      System.out.println(":\t" + toMD5(""));
//      System.out.println("null:\t" + toMD5(null));
//      System.out.println("test1:\t" + toMD5("test1"));
//      System.out.println("test2:\t" + toMD5("test2"));
//      System.out.println("ghccing9119:\t" + toMD5("ghccing9119"));
//      System.out.println("ghccing119:\t" + toMD5("ghccing119"));
    }
    public static String getFileMD5String(File file) throws IOException {
        FileInputStream in = new FileInputStream(file);
        FileChannel ch = in.getChannel();
        MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0,
                file.length());
        messagedigest.update(byteBuffer);
        return bufferToHex(messagedigest.digest());
    }

    public static String getMD5String(String s) {
        return getMD5String(s.getBytes());
    }

    public static String getMD5String(byte[] bytes) {
        messagedigest.update(bytes);
        return bufferToHex(messagedigest.digest());
    }

    private static String bufferToHex(byte bytes[]) {
        return bufferToHex(bytes, 0, bytes.length);
    }

    private static String bufferToHex(byte bytes[], int m, int n) {
        StringBuffer stringbuffer = new StringBuffer(2 * n);
        int k = m + n;
        for (int l = m; l < k; l++) {
            appendHexPair(bytes[l], stringbuffer);
        }
        return stringbuffer.toString();
    }

    private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
        char c0 = hexDigits[(bt & 0xf0) >> 4];
        char c1 = hexDigits[bt & 0xf];
        stringbuffer.append(c0);
        stringbuffer.append(c1);
    }

    public static boolean checkPassword(String password, String md5PwdStr) {
        String s = getMD5String(password);
        return s.equals(md5PwdStr);
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: