MD5学习笔记

来源:互联网 发布:完美软件启动器 编辑:程序博客网 时间:2024/05/14 15:54

           最近看张孝祥的视频。对以前的知识有了一些新的收获,现在记录下来

           代码来自 https://code.google.com/p/howbuy/source/browse/trunk/project_palmtopfund/PalmtopFund/src/howbuy/android/util/MD5Utils.java?spec=svn233&r=233


  

package howbuy.android.util;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD5Utils {        public static void main(String[] args) throws Exception{        }               public static String toMD5(String origin) throws RuntimeException{                MessageDigest digest = null;                try {                        digest = MessageDigest.getInstance("MD5");                } catch (NoSuchAlgorithmException e) {                        throw new RuntimeException("md5");                }                byte[] results = digest.digest(origin.getBytes());//字节 二进制存储                String md5String = toHex(results);                return md5String;        }        /**           二进制用十六进制表示              */       private static String toHex(byte[] results) {                if(results == null)                        return null;                StringBuilder hexString = new StringBuilder();                //字节数组16进制表示                // 1 byte=8 bit -->4bit,4bit -->hex1,hex2  即一个byte用2个16进制位表示                //hex数组: 0 .... F -----> 0001  一个16进制位可以表示4个bit位                // buf[0]        buf[1]    buf[2]                //[0100,1101][1111,0001][1010,1111] 3个字节                for(int i=0;i<results.length;i++){                        int hi = (results[i]>>4) & 0x0f;//4bit 高4位                        int lo = results[i] & 0x0f;//4bit  低4位                        hexString.append(Character.forDigit(hi, 16)).append(Character.forDigit(lo, 16));  //即2个16进制字符表示一个字节                }                return hexString.toString();        }}



上面的例子中md5加密后的长短是16个字节



0 0
原创粉丝点击