MD5加密

来源:互联网 发布:erp软件销售怎么样 编辑:程序博客网 时间:2024/05/21 01:56

以下代码为在公司项目中用到的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));
}
}

























0 0