//测试类
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加解密算法的实现及其原理。这些技术广泛应用于密码存储、数据完整性验证以及网络传输中。 首先,SHA1(Secure Hash Algorithm 1)是一种哈希函数,它接受任意长度的数据输入...
标题中的“PB可用md5加密、des加解密,Base64编码DLL、附PB11.5调用例程”表明这是一个关于PowerBuilder(PB)应用的开发资源,其中包含使用MD5加密、DES(Data Encryption Standard)解密以及Base64编码的功能。...
MD5和Base64是两种在信息技术领域广泛使用的编码与加密技术,它们各自有其特点和应用场景。 MD5,全称Message-Digest Algorithm 5,是一种广泛使用的哈希函数,可以将任意长度的信息转化为固定长度的摘要(通常为...
pb用NetDiskDLL做的MD5加密、des加密解密、Base64编码解码(含pb9 Demo).zip pb用NetDiskDLL做的MD5加密、des加密解密、Base64编码解码(含pb9 Demo).zip pb用NetDiskDLL做的MD5加密、des加密解密、Base64编码解码...
【标题】:BASE64加密解密 在计算机科学中,BASE64是一种常见的数据编码方式,用于将二进制数据转换为可打印的ASCII字符序列。这种编码方法广泛应用于电子邮件系统、网络传输以及文件存储等领域,因为它可以将任何...
加密工具类 包含md5加密 base加密解密 md5加密 aes加密解密 urlencoude
Java后台用于对数据md5转base64加密处理的一个方法封装。简单的一个加密解密的封装,初学者用,大神勿喷
总结,虽然SQL Server 2005本身并不提供内置的Base64加密解密功能,但通过创建自定义函数,我们可以实现类似的功能。需要注意的是,上述函数仅适用于简单场景,对于更复杂的需求,可能需要更完善的Base64编码解码...
标题"jquery-base64加密解密,支持中文"表明这个示例着重于使用`jQuery`进行Base64编码和解码,并且特别强调了对中文字符的支持。在Web开发中,中文字符的编码可能会引起问题,因为它们不在标准ASCII范围内。`jQuery...
总的来说,C#中的Base64加密解密提供了简单且安全的方法来处理二进制数据,特别是在需要在文本环境(如邮件、网页)中传输时。在WinForm应用中,开发者可以结合UI设计,创建用户友好的工具,方便地进行Base64编码和...
java代码实例 AES加密解密 Base64加密解密
在WinForm开发中,结合这两者,可以创建一个简单的数据处理工具,如一个文件加密解密器,使用Base64编码将文件内容变为不可读,然后用MD5计算编码后的数据摘要,以确保数据的完整性和一致性。 在提供的"加密程序...
在这个压缩包中,包含的资源可以帮助我们理解并实现SHA1、SHA、MD5、AES加密与解密,以及BASE64编码和解码。下面我们将详细探讨这些加密算法和它们在Java中的实现。 1. **SHA(Secure Hash Algorithm)**: SHA是一...
总结来说,Java中的图片Base64加密解密涉及了二进制数据与ASCII字符串之间的转换,这对于在网络上传输或存储非文本数据(如图像)非常有用。虽然`sun.misc`包中的类已不再推荐,但理解其工作原理有助于更好地理解和...
这样的工具类在实际开发中非常实用,开发者可以方便地对字符串进行Base64编码解码,同时也可以进行MD5、DES和AES的加密解密操作,以满足不同层次的安全需求。 使用这些加密技术时,需要注意以下几点: - 对于敏感...
标题中的“VB6.0 RSA/AES/Md5/Base64加密 解密 微信小程序 javascript 通用”表明这是一个关于编程的示例项目,主要涵盖了四种加密和解密技术:RSA、AES、MD5和Base64。这些技术在信息安全领域广泛应用于数据保护和...
以下是对Base64加密解密的详细讲解以及如何在C# WinForm应用中实现。 首先,理解Base64的基本原理。Base64使用64个不同的字符(包括大小写字母、数字以及"+"和"/")来表示二进制数据,每个字符代表6位二进制数。...
前端JS实现密码加密(base64.js, md5.js, sha1.js,jsencrypt.js),使用方式请看我这篇文章:https://blog.csdn.net/guxingsheng/article/details/84451573
Java Base64加密解密方法工具类
本资源提供了在Android Studio项目中使用JNI实现RSA、DES、AES以及Base64和MD5的示例。 1. **RSA**: RSA是一种非对称加密算法,它基于两个密钥——公钥和私钥。公钥可以公开,用于加密数据;而私钥必须保密,用于...