MD5学习笔记

2 篇文章 0 订阅

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

           代码来自 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值