1. 程式人生 > >adroid之加密演算法md5

adroid之加密演算法md5

同一個字元在不同的編碼下會被編成不同長度的編碼,

比如:ACSII,每個字元對應一個位元組,實際上只使用了7位,從00h-7Fh。只能表達128個字元。

GB2312,中文的一種編碼,每個字元使用兩個位元組表示。

UTF-8, 可以表達所有unicode字元,每個字元可以用1-3個位元組表示。

UTF-16, 可以表達所有unicode字元,每個字元可以用1-2個16位整數表示。

UTF-32, 可以表達所有unicode字元,每個字元可以用1個32位整數表示。


================md5===============

吧原字串轉換成byte陣列,用陣列中每一個byte去和11111111二進位制做與運算(byte & 11111111)得到int型別的值;int型別轉換成16進位制並返回string型別;不滿8個二進位制位就不全;

//加密

    public static String  mmd5(String pwd) throws NoSuchAlgorithmException {
        //得到一個資訊摘要器
        MessageDigest digest=MessageDigest.getInstance("md5");

        String password="12345";
        byte[] result=digest.digest(password.getBytes());
        StringBuffer buffer=new StringBuffer();
        //把每一個byte和0xff做與運算
        for(byte b:result){
            //與運算
            int num=b&0xff;
            String str=Integer.toHexString(num);
            if(str.length()==1){
                buffer.append("0");
            }
            buffer.append(str);
        }
        return buffer.toString();
    }