`
Mydwr
  • 浏览: 28174 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java md5加密

    博客分类:
  • java
 
阅读更多

学习url:http://www.ibm.com/developerworks/cn/java/l-security/

MD5 16位加密

import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

public class PasswordEnOrDecode {

	private static final String PASSWORD_CRYPT_KEY = "__longteng_";

	private final static String DES = "DES";

	/**
	 * 加密
	 * 
	 * @param src
	 *            数据源
	 * @param key
	 *            密钥,长度必须是8的倍数
	 * @return 返回加密后的数据
	 * @throws Exception
	 */

	public static byte[] encrypt(byte[] src, byte[] key) throws Exception {
		// DES算法要求有一个可信任的随机数源
		SecureRandom sr = new SecureRandom();
		// 从原始密匙数据创建DESKeySpec对象
		DESKeySpec dks = new DESKeySpec(key);
		// 创建一个密匙工厂,然后用它把DESKeySpec转换成
		// 一个SecretKey对象
		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);

		SecretKey securekey = keyFactory.generateSecret(dks);

		// Cipher对象实际完成加密操作
		Cipher cipher = Cipher.getInstance(DES);

		// 用密匙初始化Cipher对象
		cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);

		// 现在,获取数据并加密

		// 正式执行加密操作
		return cipher.doFinal(src);

	}

	/**
	 * 解密
	 * 
	 * @param src
	 *            数据源
	 * @param key
	 *            密钥,长度必须是8的倍数
	 * @return 返回解密后的原始数据
	 * @throws Exception
	 * 
	 */

	public static byte[] decrypt(byte[] src, byte[] key) throws Exception {
		// DES算法要求有一个可信任的随机数源
		SecureRandom sr = new SecureRandom();
		// 从原始密匙数据创建一个DESKeySpec对象
		DESKeySpec dks = new DESKeySpec(key);
		// 创建一个密匙工厂,然后用它把DESKeySpec对象转换成
		// 一个SecretKey对象
		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
		SecretKey securekey = keyFactory.generateSecret(dks);
		// Cipher对象实际完成解密操作
		Cipher cipher = Cipher.getInstance(DES);
		// 用密匙初始化Cipher对象
		cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
		// 现在,获取数据并解密
		// 正式执行解密操作
		return cipher.doFinal(src);
	}

	/**
	 * 密码解密
	 * 
	 * @param data
	 * @return
	 * @throws Exception
	 */

	public final static String jiemi(String data) {
		try {
			return new String(decrypt(hex2byte(data.getBytes()),
					PASSWORD_CRYPT_KEY.getBytes()));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	/**
	 * 密码加密
	 * 
	 * @param password
	 * @return
	 * @throws Exception
	 */

	public final static String jiami(String password) {
		try {
			return byte2hex(encrypt(password.getBytes(), PASSWORD_CRYPT_KEY
					.getBytes()));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 二行制转字符串
	 * 
	 * @param b
	 * @return
	 */

	public static String byte2hex(byte[] b) {
		String hs = "";
		String stmp = "";
		for (int n = 0; n < b.length; n++) {
			stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
			if (stmp.length() == 1)
				hs = hs + "0" + stmp;
			else
				hs = hs + stmp;
		}
		return hs.toUpperCase();
	}

	public static byte[] hex2byte(byte[] b) {
		if ((b.length % 2) != 0)
			throw new IllegalArgumentException("长度不是偶数");
		byte[] b2 = new byte[b.length / 2];
		for (int n = 0; n < b.length; n += 2) {
			String item = new String(b, n, 2);
			b2[n / 2] = (byte) Integer.parseInt(item, 16);
		}
		return b2;
	}
	public static void main(String args[]) {
		String aa = PasswordEnOrDecode.jiami("rr");
		System.out.println("原值:"+"098f6bcd4621d373cade4e832627b4f6");
		System.out.println("加密后的密码:" + aa + "==>" + aa.length());
		System.out.println("解密后的密码:" + PasswordEnOrDecode.jiemi(aa));
	}
}

 32位加密

public class Md5 {
	public Md5() {  
	  }  
	  
	  public static String byte2hex(byte[] b) { //二行制转字符串  
	    String hs = "";  
	    String stmp = "";  
	    for (int n = 0; n < b.length; n++) {  
	      stmp = (Integer.toHexString(b[n] & 0XFF));  
	      if (stmp.length() == 1)  
	        hs = hs + "0" + stmp;  
	      else  
	        hs = hs + stmp;  
	      if (n < b.length - 1)  
	        hs = hs;  
	    }  
	    return hs.toUpperCase();  
	  }  
	  
	  public static String getMD5(String password) {  
	    String returnStr = null;  
	    try {  
	      java.security.MessageDigest alga = java.security.MessageDigest.  
	          getInstance("MD5");  
	  
	      alga.update(password.getBytes());  
	      byte[] digesta = alga.digest();  
	      returnStr = byte2hex(digesta);  
	    }  
	    catch (Exception e) {}  
	    return returnStr;  
	  }  
	  
	  public static void main(String args[]) {  
	  
	    Md5 m = new Md5();  
	  
	    System.out.println("MD5 Test suite:");  
	    System.out.println("MD5(\"\"):" + m.getMD5(""));  
	    System.out.println("MD5(\"test\"):" + m.getMD5("test")+"几位数:"+m.getMD5("test").length());  
	    System.out.println("MD5(\"abc\"):" + m.getMD5("abc"));  
	    System.out.println("MD5(\"message digest\"):" + m.getMD5("message digest"));  
	    System.out.println("MD5(\"abcdefghijklmnopqrstuvwxyz\"):" +  
	                       m.getMD5("abcdefghijklmnopqrstuvwxyz"));  
	    System.out.println(  
	        "MD5(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"):" +  
	        m.getMD5(  
	        "admin"));  
	  
	  }  
}
 

 

分享到:
评论

相关推荐

    java Md5加密方法 java Md5加密方法 java Md5加密方法

    java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密...

    java Md5加密方法 java Md5加密方法

    java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法...

    java md5 加密后转为16进制

    java md5 加密后转为16进制

    java md5加密 解密

    2. **Java中的MD5加密**:在Java中,可以使用`java.security.MessageDigest`类来实现MD5加密。首先,需要创建一个MD5实例,然后更新要加密的字节数组,最后获取并转换成十六进制字符串。 ```java import java....

    Java Md5加密工具类

    Java Md5加密工具类

    java md5 加密

    Java MD5 加密是一种常见的数据哈希处理技术,用于生成固定长度的数字指纹,以确保信息的完整性和安全性。MD5(Message-Digest Algorithm 5)由Ronald Rivest在1991年设计,虽然它现在被认为在某些场景下不够安全,...

    java MD5加密 实例 例子

    下面是一个简单的Java MD5加密的代码示例,对应于你提供的`TestMD5.java`文件: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class TestMD5 { public ...

    java MD5加密工具类

    下面我们将详细讨论Java中MD5加密的原理、使用场景以及如何实现。 MD5加密的基本原理: MD5算法是一种非对称的加密算法,它将输入的信息通过一系列复杂的数学运算,最终得到一个128位的摘要信息,通常以32位的16...

    Java MD5 加密

    在Java中,实现MD5加密通常需要用到`java.security.MessageDigest`类。下面我们将详细探讨如何在Java环境中使用MD5进行密码加密: 1. 导入必要的库: 首先,我们需要导入`java.security.MessageDigest`和`java....

    JAVA MD5加密

    **JAVA MD5加密** MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将任意长度的输入转化为固定长度的输出,通常是一个128位的二进制数,以32位十六进制数的形式表示。在JAVA中,MD5主要用于数据的...

    Java MD5 加密数据库连接池密码

    在Java中,可以使用java.security.MessageDigest类来实现MD5加密。以下是一个简单的MD5加密步骤: 1. 引入`java.security`包和`javax.crypto`包。 2. 创建`MessageDigest`实例,指定算法为MD5。 3. 更新要加密的...

    js java md5加密 中文 验签

    js java MD5加密 解决中文不一致问题 验签 只有英文 数字的可以忽略了

    java MD5加密

    java MD5加密 代码实例 没有bug 典型例子

    java MD5加密的jar包

    能直接在java的应用程序中使用的MD5加密实现的jar包, 调用方法:转化成MD5:MD5.getEncryptedPwd(user.getPassword()) MD5验证:MD5.validPassword(password, user.getPassword())

    Java MD5加密工具类(支持多参数输入)

    Java工具类,它不仅实现了MD5加密,更创新性地接纳String... inputStrs,让你能一次性加密多个字符串。 1. 一键加密,多值无忧 告别繁杂,拥抱简洁。我们的Java MD5加密工具类以String... inputStrs为武器,打破了...

    java MD5加密工具包

    用java封装的MD5加密工具包,创建对象,传递要加密的字符串,即可返回32位大写的MD5加密后的字符串

    java MD5 加密 完整源代码

    java MD5 加密 完整源代码 经本人测试 运行完全没问题

Global site tag (gtag.js) - Google Analytics