A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 海是倒过来的天 中级黑马   /  2014-12-4 11:11  /  1320 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

“md5”加密的方法与实现?

2 个回复

倒序浏览
  1. import java.security.MessageDigest;
  2. import java.security.NoSuchAlgorithmException;


  3. public class Md5Encryption {
  4.         public String getMD5Code(String code) throws NoSuchAlgorithmException{
  5.                 MessageDigest md5 = MessageDigest.getInstance("MD5");
  6.                 md5.update(code.getBytes());
  7.                 byte[] md5Codes=md5.digest();
  8.                 StringBuffer sb=new StringBuffer();
  9.                
  10.                 int md5Code;
  11.                 for(int i=0;i<md5Codes.length;i++){
  12.                         md5Code=md5Codes[i];
  13.                         if(md5Code<0)
  14.                                 md5Code+=256;
  15.                         if(md5Code<16)
  16.                                 sb.append(0);
  17.                         sb.append(Integer.toHexString(md5Code));
  18.                 }
  19.                 return sb.toString().substring(8, 24);
  20.         }
  21. }
复制代码

如果依托java本身的资源,我能想到的就是这种解决办法。
如果是赤手空拳去写一个,难度系数太高了。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 as604049322 于 2014-12-5 11:24 编辑

  1. import java.security.MessageDigest;

  2. class MD5Util {

  3.         public static void main(String[] args) {
  4.                 System.out.println(MD5("20141205"));
  5.                 System.out.println(MD5("加密"));
  6.     }
  7.         
  8.     public final static String MD5(String s) {
  9.         char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};      

  10.         try {
  11.             // 获得MD5摘要算法的 MessageDigest 对象
  12.             MessageDigest md5Inst = MessageDigest.getInstance("MD5");
  13.             // 将源字符串以字节数组形式传入MessageDigest 对象并更新摘要
  14.             md5Inst.update(s.getBytes());
  15.             // 获得密文的字节数组
  16.             byte[] md = md5Inst.digest();
  17.                         
  18.              // 把密文转换成十六进制的字符串形式
  19.             char str[] = new char[md.length * 2];
  20.             int counnt = 0;
  21.             for(byte i:md){
  22.                  str[counnt++] = hexDigits[i >>> 4 & 0xf];//取该字节高4位并查表
  23.                 str[counnt++] = hexDigits[i & 0xf];//取该字节低4位并查表
  24.              }
  25.                         
  26.             return new String(str);
  27.                         
  28.         } catch (Exception e) {
  29.             e.printStackTrace();
  30.             return null;
  31.         }
  32.     }
  33. }
复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马