以下代碼為在公司項(xiàng)目中用到的md5加密的一個(gè)類。
此代碼不涉及具體業(yè)務(wù)層面的知識(shí)
個(gè)人認(rèn)為此類的優(yōu)點(diǎn):
1.方法之間的層層調(diào)用
2.個(gè)人加了點(diǎn)注釋
上代碼:
package com.test;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/*** MD5加密類練習(xí)* @author Administrator*/public class LisMD5Exercise {/*** MD5加密練習(xí) 返回byte[]* @param cPlainStr* @return* @author Zyw*/public static final byte[] encrypt(String cPlainStr){byte[] tBEncryptDatas = null;//定義一個(gè)byte數(shù)組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加密 返回十六進(jìn)制字符串* @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轉(zhuǎn)換為對(duì)應(yīng)的十六進(jìn)制字符* @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進(jìn)制,0F代表16進(jìn)制中的15即二進(jìn)制中的1111,>>>無符號(hào)右移(尖的那端在哪就是向哪個(gè)方向移動(dòng))//此外&邏輯與 &&具有短路運(yùn)算規(guī)則.ob[1] = diget[b&0X0F];String s = new String(ob);return s;} /*** byte[]轉(zhuǎn)換為對(duì)應(yīng)的十六進(jìn)制字符串* @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();}/*** 測(cè)試方法* @param args*/public static void main(String[] args){String Str = "S3000001820";System.out.println(LisMD5Exercise.encryptString(Str));}}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注