MD5加密Java版

MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆;所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,通过比在表中比破解密码的MD5算法散列值,通过匹配从映射表中找出破解密码所对应的原始明文。

import java.security.MessageDigest;

public class Password {
 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 createPassword(String inputString) {
 return encodeByMD5(inputString);
} 

/**
 * 验证输入的密码是否正确
 *
 * @param password
 *            真正的密码(加密后的真密码)
 * @param inputString
 *            输入的字符串
 * @return 验证结果,boolean类型
 */
public static boolean authenticatePassword(String password,
  String inputString) {
 if (password.equals(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 b
 *            字节数组
 * @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];
} 

public static void main(String[] args) {
 String password = Password.createPassword("huangcheng");
 System.out.println("对huangcheng用MD5摘要后的字符串:" + password);
 String inputString = "huangchenghuangcheng";
 System.out.println("huangchenghuangcheng与密码匹配?"
   + Password.authenticatePassword(password, inputString));
 inputString = "huangcheng";
 System.out.println("huangcheng与密码匹配?"
   + Password.authenticatePassword(password, inputString));
} 

}
时间: 11-29

MD5加密Java版的相关文章

利用Java自带的MD5加密java.security.MessageDigest;

MD5加密算法,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2.MD3.MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上个世纪90年代初开发出来的.MD5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前"压缩"成一种保密的格式,关键之处在于——这种"压缩"是不可逆的. Java JDK已经自带了MD5的实

MD5加密Java工具类

原文:http://www.open-open.com/code/view/1421764946296 import java.security.MessageDigest; public class MD5 { //公盐 private static final String PUBLIC_SALT = "demo" ; //十六进制下数字到字符的映射数组 private final static String[] hexDigits = {"0", "

MD5加密--Java

MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992). MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之

MD5 加密 java代码实现

1 package com.company.fjf; 2 3 import java.security.MessageDigest; 4 import java.security.NoSuchAlgorithmException; 5 6 public class MD5Test { 7 private final static String[] strDigits = { "0", "1", "2", "3", "

Md5加密——java代码

1 public class StringToMD5 { 2 3 private static StringBuffer sBuffer; 4 5 public static String getMD5Code(String str) { 6 MessageDigest md; 7 try { 8 // md.digest() 该函数返回值为存放哈希值结果的byte数组 9 md = MessageDigest.getInstance("MD5"); 10 byte[] md5Byte

java中使用MD5加密的算法

MD5,全名Message Digest Algorithm 5,中文名为消息摘要算法第五版,为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.以下是JAVA语言中使用MD5加密的工具类. import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util { /** * 对字符串进行MD5摘要加密,返回结果与MySQL的MD5函数一致 *

Java 语言实现 MD5 加密

Java 语言实现 MD5 加密 背景说明 在实际项目中,为了安全性考虑,经常要求账号密码是以加密后的密文形式,保存到数据库中. 这样,即使有人获取到了数据库中的密文密码,也不知道明文密码信息是什么,从而防止系统被恶意访问. 密码加密有很多种方式,比如:Base64,DSA,RSA,MD5,SHA128,SHA256,SHA512等加密方式. 本文主要讲述 MD5 加密方式. MD5 简介 MD5 消息摘要算法(英文:MD5 Message-Digest Algorithm),一种被广泛使用的密

Java实现MD5加密和文件校验

MD5简介: MD5的全称:Message-Digest Algorithm 5(信息-摘要算法5) MD5的加密方式是一种哈希加密.一些主流的编程语言都已经实现了MD5的加密,所以如果你的程序或是系统涉及到在多种语言之间的校验,那么MD5可以是备选之一.不过因为MD5是采用哈希函数来进行的加密,所以它无关密钥,也就是说在确定了明文的情况下,MD5就可以加密.不过MD5是不可逆的,只能加密,不能解密. MD5加密字符串: public class Md5Util { // 标准的构造函数,调用m

java中md5加密方法

package com.func; import java.io.UnsupportedEncodingException;import java.math.BigInteger;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException; public class Md5 { public static String getMd5(String plainText) { try { Messa