public class DES {
private static final String PASSWORD_CRYPT_KEY = "khkhkhkhkh";
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 decrypt(String data) {
try {
return new String(decrypt(hex2byte(data.getBytes()),
PASSWORD_CRYPT_KEY.getBytes()));
} catch (Exception e) {
}
return null;
}
/**
* 密码加密
*
* @param password
* @return
* @throws Exception
*/
public final static String encrypt(String password) {
try {
return byte2hex(encrypt(password.getBytes(), PASSWORD_CRYPT_KEY
.getBytes()));
} catch (Exception e) {
}
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 pwd = "dasdfaaaaaa";
System.out.println("测试数据=" + pwd);
String data = encrypt(pwd);
System.out.println("加密后的数据data=" + data);
pwd = decrypt(data);
System.out.println("解密后=" + pwd);
}
}
分享到:
相关推荐
这个DES加密类可能应用于数据库中的敏感数据存储、API之间的安全通信或者用户密码的存储(通常会结合哈希算法一起使用)。 请注意,实际的类实现会根据开发者的具体需求和编码风格有所不同,以上描述提供了一个...
- **加密类**: 在编程中,用于封装加密算法的类,便于使用和管理加密操作。 在C++编程中,可以创建类来封装3DES操作,提供接口如`encrypt`和`decrypt`,这样可以使代码更加模块化和易于维护。同时,类还可以包含...
在C#编程语言中,我们可以自定义实现DES加密类来方便地进行数据加密和解密操作。以下是对这个"自己写的C# DES加密类"的详细解释。 首先,DES是一种块加密算法,它将数据分成64位的块进行处理。不过,由于第8位用于...
DES加密类,可以自定义key,可以更改IP置换表
DES加密类,分装好了最完美的DES加密和解密方法,只需直接调用方法即可使用该加密类。
关于安全方面的php代码类,采用的是3des加密技术,很好用,
Java写的DES的一个类”表明了这个压缩包包含两个部分:一个是使用Delphi编程语言编写的用于执行DES(Data Encryption Standard)加密和解密的小程序,另一个是用Java实现的DES加密类。DES是一种广泛使用的对称加密...
des加密工具类,des加密工具类,des加密工具类,des加密工具类,des加密工具类,
### DES加密技术在C#中的应用 #### 一、引言 数据安全是现代信息技术领域的一个核心议题,尤其是在网络通信和大数据处理中,确保数据在传输和存储过程中的机密性和完整性至关重要。DES(Data Encryption Standard...
标题中的“3DES加密解密工具”指的是一个用于执行三重数据加密标准(3DES,Triple DES)的软件工具,这种工具通常用于保护敏感数据的安全,确保信息在传输过程中的机密性。3DES是DES(Data Encryption Standard,...
在给定的“des加密例程”中,可能包含了一个调用动态链接库(DLL)实现DES加密解密的示例代码。DLL是Windows操作系统中的一种共享库,可以被多个程序同时调用,节省内存资源并便于代码复用。这个示例可能涉及以下...
在C++中实现DES加密解密,可以创建一个类来封装相关的操作,这样有利于代码的复用和维护。 描述中提到的"单倍双倍加密算法的实现",可能是指使用DES算法进行一次或两次加密的过程。单次DES加密使用同一个密钥对数据...
3des加密工具类
3DES加密解密的全工具类,快速帮助新人进行3Des加密解密
6. **执行D3DES**:首先用第一个密钥执行DES加密,然后用第二个密钥执行DES解密,最后再用第一个密钥进行一次DES加密。这个过程就是D3DES的核心。 7. **密文后处理**:加密完成后,对密文进行逆初始置换,得到最终...
在VB中,可以使用.NET框架提供的System.Security.Cryptography命名空间下的DESCryptoServiceProvider类来实现DES加密和解密。 1. **DES加密过程**: - 创建DESCryptoServiceProvider对象,这是VB中实现DES算法的...
在C#中,可以使用`System.Security.Cryptography`命名空间下的`DESCryptoServiceProvider`类来实现DES加密。 1. **设置密钥和初始化向量(IV)**:在使用DES时,你需要一个密钥和一个初始化向量。密钥决定了加密和...
DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 位密钥对 64 位数据块进行加密。下面是 DES 加密解密算法的 C 语言实现的知识点总结。 字节与二进制转换 在...
在Qt中,可以利用QCryptographicHash类和其他辅助类来实现DES加密。首先,你需要创建一个DES加密对象,设置密钥,并选择加密模式(如ECB、CBC等)。然后,对明文数据进行处理,将其转换为适当的数据格式。在进行加密...