java使用MD5密码加密
来源:互联网 发布:java如何实现线程安全 编辑:程序博客网 时间:2024/04/29 08:52
Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。
import java.security.MessageDigest;import java.util.Random;/** * * @author Administrator */public class CipherUtil { //十六进制下数字到字符的映射数组 private final static String[] hexDigits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; /** * * 把inputString加密 */ public static String generatePassword(String inputString) { return encodeByMD5(inputString); } /** * 验证输入的密码是否正确 * * @param password 加密后的密码 * @param inputString 输入的字符串 * @return 验证结果,TRUE:正确 FALSE:错误 */ public static boolean validatePassword(String password, String inputString) { if (password.equalsIgnoreCase(encodeByMD5(inputString))) { return true; } else { return false; } } /** * 对字符串进行MD5加密 */ private static String encodeByMD5(String originString) { if (originString != null) { try { //创建具有指定算法名称的信息摘要 MessageDigest md = MessageDigest.getInstance("MD5"); //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算 byte[] results = md.digest(originString.getBytes()); //将得到的字节数组变成字符串返回 String resultString = byteArrayToHexString(results); return resultString.toUpperCase(); } catch (Exception ex) { ex.printStackTrace(); } } return null; } /** * 转换字节数组为十六进制字符串 * * @param 字节数组 * @return 十六进制字符串 */ private static String byteArrayToHexString(byte[] b) { StringBuffer resultSb = new StringBuffer(); for (int i = 0; i < b.length; i++) { resultSb.append(byteToHexString(b[i])); } return resultSb.toString(); } /** * 将一个字节转化成十六进制形式的字符串 */ private static String byteToHexString(byte b) { int n = b; if (n < 0) { n = 256 + n; } int d1 = n / 16; int d2 = n % 16; return hexDigits[d1] + hexDigits[d2]; } /** * 获取salt值 * * @return */ public static String getSalt() { Random random = new Random(); String SaltStr = ""; String s = null; int num = 0; while (num < 8) { switch (random.nextInt(63)) { case (0): s = "0"; break; case (1): s = "1"; break; case (2): s = "2"; break; case (3): s = "3"; break; case (4): s = "4"; break; case (5): s = "5"; break; case (6): s = "6"; break; case (7): s = "7"; break; case (8): s = "8"; break; case (9): s = "9"; break; case (10): s = "a"; break; case (11): s = "b"; break; case (12): s = "c"; break; case (13): s = "d"; break; case (14): s = "e"; break; case (15): s = "f"; break; case (16): s = "g"; break; case (17): s = "h"; break; case (18): s = "i"; break; case (19): s = "j"; break; case (20): s = "k"; break; case (21): s = "m"; break; case (23): s = "n"; break; case (24): s = "o"; break; case (25): s = "p"; break; case (26): s = "q"; break; case (27): s = "r"; break; case (28): s = "s"; break; case (29): s = "t"; break; case (30): s = "u"; break; case (31): s = "v"; break; case (32): s = "w"; break; case (33): s = "l"; break; case (34): s = "x"; break; case (35): s = "y"; break; case (36): s = "z"; break; case (37): s = "A"; break; case (38): s = "B"; break; case (39): s = "C"; break; case (40): s = "D"; break; case (41): s = "E"; break; case (42): s = "F"; break; case (43): s = "G"; break; case (44): s = "H"; break; case (45): s = "I"; break; case (46): s = "L"; break; case (47): s = "J"; break; case (48): s = "K"; break; case (49): s = "M"; break; case (50): s = "N"; break; case (51): s = "O"; break; case (52): s = "P"; break; case (53): s = "Q"; break; case (54): s = "R"; break; case (55): s = "S"; break; case (56): s = "T"; break; case (57): s = "U"; break; case (58): s = "V"; break; case (59): s = "W"; break; case (60): s = "X"; break; case (61): s = "Y"; break; case (62): s = "Z"; break; } num++; SaltStr = s + SaltStr; } return SaltStr; } public static void main(String[] args) { System.out.println(CipherUtil.generatePassword("123")+"\t"+CipherUtil.getSalt()); }}MD5加密部分的代码还可以简化成
public final static String MD5(String s) { char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; try { byte[] strTemp = s.getBytes(); //使用MD5创建MessageDigest对象 MessageDigest mdTemp = MessageDigest.getInstance("MD5"); mdTemp.update(strTemp); byte[] md = mdTemp.digest(); int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte b = md[i]; //System.out.println((int)b); //将没个数(int)b进行双字节加密 str[k++] = hexDigits[b >> 4 & 0xf]; str[k++] = hexDigits[b & 0xf]; } return new String(str); } catch (Exception e) { return null; } }
- java使用MD5密码加密
- 【JAVA】字符串密码使用MD5加密
- java 密码MD5加密
- java密码MD5加密
- java 密码MD5加密
- java MD5 密码加密
- java-java密码MD5加密
- IOS 密码使用MD5加密
- java MD5 密码加密例子
- md5密码加密(java)
- java 为密码md5加密
- java 的MD5加密密码
- java js md5 密码加密
- java中使用MD5算法给密码加密的方式
- java中使用MD5对密码进行加密
- java中使用md5对密码进行加密
- Java使用MD5加密
- C#:使用MD5对密码进行加密!
- win7 eclipse: Could not open Selected VM debug port (8700)
- 夜间释放氧气的植物
- after触发器和instead of 触发器的区别
- 在C++中子类继承和调用父类的构造函数方法
- want to port JIT to MIPS - stack/code segment
- java使用MD5密码加密
- Gecko框架解析
- 最常用的Emacs的基本操作
- 在CityEngine中的圆柱体建模
- RFS的web自动化验收测试——安装篇
- 2013工资新规定 未来的八种人将被社会淘汰!
- Oracle执行计划详解
- linux学习入门9——linux文件系統(linuxcast.net)(磁盘分区格式化、创建文件系统、卷标设置及修复损坏文件系统)
- css制作流程及标准