import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;
import javax.crypto.*;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import java.security.Key;
import java.security.spec.AlgorithmParameterSpec;
/**
* 使用DES加密和解密的方法
*/
public class CryptoTools {
private final byte[] DESkey = new byte[]{58, 21, 93, -100, 78, 4, -38, 32, 15, -89, 44, 90, 26, -6, -101, -112, 2, 94, 18, -52, 119, 35, -72, -69};// 设置密钥,略去
// private final byte[] DESIV = new byte[]{-121, 39, -10, -113, 36, 99, -89, 3, 42, 8, 62, 83, -72, 4, -47, 43, -111, 39, 112, 58, -83, 10, 41, -44};// 设置向量,略去
private final byte[] DESIV = new byte[]{58, 21, 93, 93, 93, 93, 93, 93};// 设置密钥,略去
private AlgorithmParameterSpec iv = null;// 加密算法的参数接口,IvParameterSpec是它的一个实现
private Key key = null;
public CryptoTools() throws Exception {
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");// 获得密钥工厂
// 设置密钥参数,得到密钥对象
key = keyFactory.generateSecret(new DESKeySpec(DESkey));// 得到密钥对象
iv = new IvParameterSpec(DESIV);// 设置向量
}
public String encode(String data) throws Exception {
Cipher enCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");// 得到加密对象Cipher
enCipher.init(Cipher.ENCRYPT_MODE, key, iv);// 设置工作模式为加密模式,给出密钥和向量
byte[] pasByte = enCipher.doFinal(data.getBytes("utf-8"));
BASE64Encoder base64Encoder = new BASE64Encoder();
return base64Encoder.encode(pasByte);
}
public String decode(String data) throws Exception {
Cipher deCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
deCipher.init(Cipher.DECRYPT_MODE, key, iv);
BASE64Decoder base64Decoder = new BASE64Decoder();
byte[] pasByte = deCipher.doFinal(base64Decoder.decodeBuffer(data));
return new String(pasByte, "UTF-8");
}
public static void main(String[] args) {
try {
String test = "a1";
CryptoTools des = new CryptoTools();//自定义密钥
System.out.println("加密前的字符:" + test);
System.out.println("加密后的字符:" + des.encode(test));
System.out.println("解密后的字符:" + des.decode(des.encode(test)));
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
DES加密类,分装好了最完美的DES加密和解密方法,只需直接调用方法即可使用该加密类。
C#编写的DES加密和解密方法,可直接调用使用,有需要的朋友可以下载使用!
DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 位密钥对 64 位数据块进行加密。下面是 DES 加密解密算法的 C 语言实现的知识点总结。 字节与二进制转换 在...
压缩包内的“3des.exe”文件很可能是该3DES加密解密工具的可执行程序,用户可以通过运行这个程序来实现对数据的加密和解密。使用此类工具时,用户需要输入适当的密钥,并选择加密或解密模式。对于3DES,为了保证安全...
这需要创建一个.NET类库项目,实现DES加密解密功能,然后在VBA中通过CreateObject或早绑定的方式调用这些函数。 以下是VB.NET中实现DES加密解密的简单示例代码: ```vbnet Imports System.IO Imports System....
DES加密 解密 方法: DESr DESw 支持3DES加密 解密 类中利用函数重载的方式 实现两种加密方式 加密后为16进制字符串 使用方法: 实例化一个对象 然后就可以随便用了。 如 DES加密 解密 CString sd,sd2; yxyDES2 ...
对数据进行单DES或者3DES加密或者解密,如果密码长度为8字节则为DES加密或者解密
Java和JavaScript之间的DES加密解密是信息安全领域中的一个重要话题,主要涉及到数据的保护和通信的安全。DES(Data Encryption Standard)是一种古老的对称加密算法,尽管它在安全性上已不被视为最佳选择,但在某些...
在给定的“des加密例程”中,可能包含了一个调用动态链接库(DLL)实现DES加密解密的示例代码。DLL是Windows操作系统中的一种共享库,可以被多个程序同时调用,节省内存资源并便于代码复用。这个示例可能涉及以下...
java写的关于DES加密和解密工具,可以对字符串进行加密和解密操作
描述中提到的"加出来和你文档上的不一样我负责"可能是指提供的代码实现与文档中描述的3DES加密解密方法可能存在差异,但开发者对此负责,意味着他们对代码的正确性和可靠性有信心。"DES3encrypt"和"DES3decrypt"是...
在实现DES加密解密的过程中,首先需要理解DES的基本步骤,包括初始置换、扩展置换、8轮Feistel网络、逆扩展置换和逆初始置换。在MFC环境中,这些步骤可以通过定义类和函数来实现。例如,可以创建一个名为`CDES`的类...
3DES加密解密的全工具类,快速帮助新人进行3Des加密解密
使用java技术编写的Des加密/解密,的工具类,已亲测可完全正确使用,无bug
本资源"DES加密解密一套JAVA&IOS"提供了一套跨平台的解决方案,允许JAVA和iOS应用之间进行互操作性的加密和解密操作。 在JAVA平台上,DES加密和解密通常通过Java的`javax.crypto`包来实现。这个包提供了`Cipher`类...
4. **创建内存流和加密解密缓冲区**:创建`MemoryStream`对象用于存储加密或解密后的数据,以及`CryptoStream`对象,它将数据流通过加密或解密处理。 5. **执行加密或解密操作**:对于加密,将明文写入加密流;对于...
在Delphi编程环境中,实现DES加密和解密是一项常见的任务,特别是在处理敏感信息时。 标题"DES加密_delphi_加解密_des_"所涉及的核心知识点是: 1. **DES算法**:DES是一种64位块密码,使用56位的密钥进行加密。它...
本文将详细介绍如何在Java和.NET中实现互操作的DES加密解密,并提供两种不同的方法。 **方法一:使用标准库** 1. **Java实现**: - 引用`javax.crypto`包中的`Cipher`、`KeyGenerator`和`SecretKey`类。 - 创建`...
DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密...
在描述中提到的"DES加密解密工具"是一款专用于执行DES加密和解密操作的应用程序。这款工具的优点在于用户可以本地运行,避免了在线加解密可能带来的密钥泄露风险,确保了数据安全性。用户只需要输入相应的密钥和待...