以下代碼為在公司項目中用到的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));}}
新聞熱點
疑難解答