/**
* 使用3DES加密与解密,可对byte[],String类型进行加密与解密 密文可使用String,byte[]存储.
*
* @author leizhimin 2010-6-3 11:10:54
*/
public class ThreeDES {
private Key key; //密钥
/**
* 根据参数生成KEY
*
* @param strKey 密钥字符串
*/
public void getKey(String strKey) {
try {
KeyGenerator _generator = KeyGenerator.getInstance("DES");
_generator.init(new SecureRandom(strKey.getBytes()));
this.key = _generator.generateKey();
_generator = null;
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 加密String明文输入,String密文输出
*
* @param strMing String明文
* @return String密文
*/
public String getEncString(String strMing) {
byte[] byteMi = null;
byte[] byteMing = null;
String strMi = "";
BASE64Encoder base64en = new BASE64Encoder();
try {
byteMing = strMing.getBytes("UTF8");
byteMi = this.getEncCode(byteMing);
strMi = base64en.encode(byteMi);
} catch (Exception e) {
e.printStackTrace();
} finally {
base64en = null;
byteMing = null;
byteMi = null;
}
return strMi;
}
/**
* 解密 以String密文输入,String明文输出
*
* @param strMi String密文
* @return String明文
*/
public String getDesString(String strMi) {
BASE64Decoder base64De = new BASE64Decoder();
byte[] byteMing = null;
byte[] byteMi = null;
String strMing = "";
try {
byteMi = base64De.decodeBuffer(strMi);
byteMing = this.getDesCode(byteMi);
strMing = new String(byteMing, "UTF8");
} catch (Exception e) {
e.printStackTrace();
} finally {
base64De = null;
byteMing = null;
byteMi = null;
}
return strMing;
}
/**
* 加密以byte[]明文输入,byte[]密文输出
*
* @param byteS byte[]明文
* @return byte[]密文
*/
private byte[] getEncCode(byte[] byteS) {
byte[] byteFina = null;
Cipher cipher;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byteFina = cipher.doFinal(byteS);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
/**
* 解密以byte[]密文输入,以byte[]明文输出
*
* @param byteD byte[]密文
* @return byte[]明文
*/
private byte[] getDesCode(byte[] byteD) {
Cipher cipher;
byte[] byteFina = null;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
byteFina = cipher.doFinal(byteD);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteFina;
}
public static void main(String[] args) {
ThreeDES des = new ThreeDES(); // 实例化一个对像
des.getKey("abcdefgasiainfo"); // 生成密匙
String strEnc = des.getEncString("abc");// 加密字符串,返回String的密文
System.out.println(strEnc);
String strDes = des.getDesString(strEnc);// 把String 类型的密文解密
System.out.println(strDes);
}
}
分享到:
相关推荐
DES结合Base64加密
开发者需要自己编写代码来实现密钥的生成、数据的分组以及3DES的加密解密过程,并结合Base64编码解码函数。 需要注意的是,虽然3DES在安全性方面比单一的DES强,但在现代密码学中,其仍被认为是较弱的加密方案,...
在这个项目中,"Base64And3Des(C++3Des加密解密结合Base64加密解密).rar" 提供了一个C++实现,用于结合3DES(Triple Data Encryption Standard)加密算法与Base64编码进行数据的加解密。下面我们将详细探讨3DES和...
易语言Base64支持密码加密是一项在易语言编程环境下实现数据加密与解密的技术,它主要涉及到了两个关键概念:Base64编码和密码加密。Base64是一种用于将二进制数据转换为可打印字符的编码方式,而密码加密则是为了...
在`IA300ServerScript.html`文件中,很可能包含了示例代码或者一个简单的交互界面,用于演示3DES加密解密和Base64编码解码的功能。使用者可以通过这个HTML页面测试和验证JavaScript代码的正确性和兼容性。 总之,这...
在压缩包`Base64And3Des`中,应该包含了实现这些功能的源代码示例,你可以通过阅读和学习这些代码,更好地理解和掌握C++中3DES和Base64的使用方法。记住,理解并熟练运用这些加密技术对于保护数据安全至关重要。
标题中的"DES.zip_DES+base64_base64 des_c++ des dll_des base64_des dll"揭示了本项目的核心内容,它涉及到DES(Data Encryption Standard)加密算法的实现,以及与Base64编码的结合。这个项目是用C++编程语言编写...
本文将深入探讨三种常见的加密算法:AES、DES和Base64,并结合Delphi编程语言的源代码进行解析。 首先,让我们了解Base64。Base64是一种编码方法,而非严格的加密算法。它主要用于将二进制数据转化为可打印的ASCII...
那么我们来一个Base64+DES组合加密,支持自定义Key(密钥)。 Base64加密后的字符串在URL中不安全,想去掉特殊符号?这里支持。 想在解密失败返回统一字符?这里支持。告诉我还有什么是你想要的。这里都有,如果好用...
"android ios java后台通用DES base64加密"这个主题涉及到两种常见的加密技术:DES(Data Encryption Standard)和Base64,它们在保护敏感信息方面发挥着重要作用。 DES是一种对称加密算法,由美国国家标准局在1970...
在实际应用中,3DES常用于存储敏感信息,如数据库密码或信用卡号,而Base64则常用于在网络上传输图片、视频等二进制数据。结合使用3DES和Base64,可以在保证数据安全的同时,方便其在网络上的传输。例如,先用3DES对...
本文将深入探讨三种常见的加密算法:3DES、MD5以及Base64,并介绍它们在实际应用中的工具和用途。 首先,我们来了解一下3DES(Triple DES,三重数据加密标准)。3DES是一种对称加密算法,它是DES(Data Encryption ...
总结来说,DES+BASE64源代码实现了数据的安全加密和解密,适用于需要保护信息不被非法获取的场景。DES提供了对称加密的手段,而BASE64则确保了加密后的数据可以在纯文本环境中安全传输。在Java中,这两个功能可以...
Delphi加密算法集,包括了Delphi AES DES MD5 RSA BASE64 2DES 3DES Blowfish CRC32-Static SHA等 常用的加密算法用法实例,比较不错的Delphi加密实例代码了,浅显易懂而且实用的常见加密算法实例,包括字符串和文件...
网上大多DES加密都是经BASE64加密后返回,这本身就是有问题的,现在上传不经过BASE64加密的版本,另加java解密代码,测试通过。
例如,你可以先创建密钥,然后使用DES类的加密方法对数据进行加密,接着用BASE64类的编码方法将加密后的二进制数据转化为可打印的文本格式。反之,解密时则需要先用BASE64解码,再通过DES解密。 总的来说,DES和...
文件"TestDesEncrypt"很可能是一个测试程序,用于演示如何使用这些源代码进行DES加密和Base64编码。通常,这样的测试程序会包含输入数据、密钥设置、加密过程、解密过程以及结果验证,以便用户了解整个流程。 总的...
本文将深入探讨如何在JavaScript(JS)客户端和Java(Android)端实现3DES加密解密以及Base64编码解码,这对于保护用户敏感信息和实现安全通信至关重要。 首先,3DES(Triple Data Encryption Standard)是一种加强...
**3DES CBC加密解密与Base64及16进制输出详解** 3DES,全称为Triple Data Encryption Algorithm,即三重数据加密算法,是一种基于DES(Data Encryption Standard)的加强版加密算法。DES是一种对称加密算法,而3DES...