//测试类
public class Md5Test {
public static void main(String[] args) throws Exception {
String pswmd5 = Base64.encode(MD5Crypter.encryptiso("加密测试"));
//MD5加密
System.out.println("MD5加密:"+pswmd5);
//base64加密/解密
CommonCrypter a = new CommonCrypter();
a.init();
System.out.println("base64加密:"+CommonCrypter.encrypt("加密测试"));
System.out.println("base64解密:"+CommonCrypter.decrypt("9lNpivBEsuGeYhZ/dNL4rQ=="));
}
}
//md5类
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.log4j.Logger;
/**
* @author user
*
*/
public class MD5Crypter {
private static Logger logger = Logger.getLogger("com.hintsoft.util.encoding.MD5Crypter");
/**
* 将数据使用MD5转码
* @param message
* @return
*/
public static byte[] encryptUTF(String message) {
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
md.reset();
return md.digest(message.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
logger.info("Password Md5 Error!");
} catch (UnsupportedEncodingException e) {
logger.info("Password Md5 Error!");
}
return null;
}
/**
* 将数据使用MD5加密
* @param message
* @return
*/
public static byte[] encryptiso(String message) {
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
md.reset();
return md.digest(message.getBytes("iso8859-1"));
} catch (NoSuchAlgorithmException e) {
logger.info("Password Md5 Error!");
} catch (UnsupportedEncodingException e) {
logger.info("Password Md5 Error!");
}
return null;
}
/**
* 将数据使用MD5转码
* @param message
* @return
*/
public static byte[] encrypt(byte[] message) {
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
md.reset();
return md.digest(message);
} catch (NoSuchAlgorithmException e) {
logger.info("Password Md5 Error!");
}
return null;
}
}
//Base64类
package entity;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class CommonCrypter {
private static Cipher enCipher;
private static Cipher deCipher;
private static CommonCrypter _instance = null;
public static CommonCrypter getInstance() {
if (_instance == null) {
_instance = new CommonCrypter();
}
return _instance;
}
public void init() throws Exception {
String keybyte = "hi%$so78";
String ivbyte = "12up56^&";
byte[] secKey = keybyte.getBytes();
byte[] secIv = ivbyte.getBytes();
// 创建MD5散列对象
MessageDigest md = MessageDigest.getInstance("MD5");
// 散列密钥
md.update(secKey);
// 获得DES密钥
DESKeySpec dks = new DESKeySpec(md.digest());
// 获得DES加密密钥工厂
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
// 生成加密密钥
SecretKey key = keyFactory.generateSecret(dks);
// 创建初始化向量对象
IvParameterSpec iv = new IvParameterSpec(secIv);
AlgorithmParameterSpec paramSpec = iv;
// 为加密算法指定填充方式,创建加密会话对象
enCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
// 为加密算法指定填充方式,创建解密会话对象
deCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
// 初始化加解密会话对象
enCipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
deCipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
}
/**
* 加密数据
*
* @param data
* 待加密二进制数据
* @return 经BASE64编码过的加密数据
* @throws Exception
*/
public static String encrypt(String str) {
if (str == null || str.equals("")) {
return null;
}
try {
byte[] data = str.getBytes();
byte[] enc = null;
synchronized(enCipher){
enc = enCipher.doFinal(data);
}
return new BASE64Encoder().encode(enc);
} catch (javax.crypto.BadPaddingException e) {
} catch (IllegalBlockSizeException e) {
}
return null;
}
/**
* 解密数据
*
* @param data
* 待解密字符串(经过BASE64编码)
* @return 解密后的二进制数据
* @throws Exception
*/
public static String decrypt(String str) throws Exception {
if (str == null || str.equals("")) {
return null;
}
try {
byte[] dec = new BASE64Decoder().decodeBuffer(str);
byte[] result = null;
synchronized(deCipher) {
result = deCipher.doFinal(dec);
}
return new String(result);
} catch (javax.crypto.BadPaddingException e) {
} catch (IllegalBlockSizeException e) {
} catch (UnsupportedEncodingException e) {
} catch (java.io.IOException e) {
}
return null;
}
}
分享到:
相关推荐
C++实现了SHA1加密算法,MD5加密算法和base64加解密算法类。 程序中做了测试, 绝对可用。
pb用NetDiskDLL做的MD5加密、des加密解密、Base64编码解码(含pb9 Demo).zip pb用NetDiskDLL做的MD5加密、des加密解密、Base64编码解码(含pb9 Demo).zip pb用NetDiskDLL做的MD5加密、des加密解密、Base64编码解码...
加密工具类 包含md5加密 base加密解密 md5加密 aes加密解密 urlencoude
Java后台用于对数据md5转base64加密处理的一个方法封装。简单的一个加密解密的封装,初学者用,大神勿喷
较之前上传版本增加了base64编码功能, md5、des、base64都增加了专门的unicode调用声明,方便多语言操作, 代码里有一个拖拽文件显示路径的sle
java代码实例 AES加密解密 Base64加密解密
加解密工具集 对字符串做BASE64加密 解密 MD5加密 解密 DES加密 DES解密 AES加密 AES解密
java实现SHA1、SHA、MD5、AES加密、AES解密、BASE64解密、BASE64加密,以及apache BASE64 jar和源码
jquery实现的加密解密算法,页面经过jquery加密后,提交到后台,通过java的base64解密算法可以原样解析, demo中用的是servlet和jquery的$.ajax实现...
java代码实现各种加密算法:AES加密解密,RAS加密解密,DES加密解密,MD5加密,Base64加密解密,异或加密解密
C# Winform Base64加密解密,为程序源代码,可直接运行
Base64加密、MD5加密,winform下面的,只是个简单的代码示例
Java Base64加密解密方法工具类
java 图片base64 加密解密 代码 包括jar
c++实现base64算法加密解密,不需要修改,直接运行即可
VB C# 图片 文字 加密 解密 base64VB C# 图片 文字 加密 解密 base64VB C# 图片 文字 加密 解密 base64
加密解密工具--MD5/URL/Base64
MD5 、base64加密技术、最先进的加密解密技术,采用MD5、Base64加密、解密源代码
java开发使用base64进行加密解密,开发人员只需调用其中方法即可完成加密解密操作!
PB关于字符进制数转化及base64加密、解密 1、字符型十六进制数转为十进制数值 2、十进制数转为十六进制字符 3、base64加密 4、base64解密 5、将blob转为byte数组