MD5加密

2/10/2017来源:ASP.NET技巧人气:632

以下代码为在公司项目中用到的md5加密的一个类。

此代码不涉及具体业务层面的知识

个人认为此类的优点:

1.方法之间的层层调用

2.个人加了点注释

上代码:

package com.test; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * MD5加密类练习 * @author Administrator */ public class LisMD5Exercise { /** * MD5加密练习 返回byte[] * @param cPlainStr * @return * @author Zyw */ public static final byte[] encrypt(String cPlainStr){ byte[] tBEncryptDatas = null;//定义一个byte数组 try { MessageDigest md = MessageDigest.getInstance("MD5"); //System.out.PRintln(cPlainStr.getBytes().toString()); md.update(cPlainStr.getBytes()); tBEncryptDatas = md.digest(); } catch (NoSuchAlgorithmException e) { tBEncryptDatas = null; e.printStackTrace(); } return  tBEncryptDatas; } /** * MD5加密 返回十六进制字符串 * @param cPlainStr * @return */ public static final String encryptString(String cPlainStr){ byte[] tBEncryptDatas = null; tBEncryptDatas = LisMD5Exercise.encrypt(cPlainStr); if(tBEncryptDatas==null) return null; return LisMD5Exercise.bytesHEX(tBEncryptDatas); } /** * 把byte转换为对应的十六进制字符 * @author Administrator * @param b * @return */ public static String byteHEX(byte b){ char[] diget = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; char[] ob = new char[2]; ob[0] = diget[(b>>>4)&0X0F]; //0X代表16进制,0F代表16进制中的15即二进制中的1111,>>>无符号右移(尖的那端在哪就是向哪个方向移动) //此外&逻辑与 &&具有短路运算规则. ob[1] = diget[b&0X0F]; String s = new String(ob); return s; }  /** * byte[]转换为对应的十六进制字符串 * @param byte[] b */ public static String bytesHEX(byte[] b){ StringBuffer Str = new StringBuffer(); for(int i=0;i<b.length;i++){ Str.append(LisMD5Exercise.byteHEX(b[i])); } return Str.toString(); } /** * 测试方法 * @param args */ public static void main(String[] args){ String Str = "S3000001820"; System.out.println(LisMD5Exercise.encryptString(Str)); } }