来源:http://blog.csdn.net/s449201708/article/details/4020757
import java.security.*;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
/**
* 字符串工具集合
* @author Liudong
*/
public class StringUtils {
private static final String PASSWORD_CRYPT_KEY = "__jDlog_";
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;
分享到:
相关推荐
基于Java实现的DES算法 作为一个IT行业大师,我将从给定的文件中生成相关知识点。 标题:基于Java实现的DES算法 在这个标题中,我们可以看到这个Java程序的主要功能是实现DES(Data Encryption Standard)算法。...
总的来说,Java实现DES加密涉及到了对称加密的概念、DES算法的原理、Java的加密API使用,以及Base64编码。理解并掌握这些知识点对于进行数据安全编程至关重要。在编写和使用这类工具类时,应确保密钥管理的安全性,...
在Java中,实现DES加密通常需要使用`javax.crypto`包中的类,如`KeyGenerator`用于生成密钥,`Cipher`用于执行加密和解密操作,以及`SecretKeySpec`用于创建密钥对象。以下是一个简单的Java DES加密的步骤: 1. **...
总之,这个"JAVA实现DES加解密系统"项目涵盖了对称加密、Java安全库的使用、GUI编程和文件操作等多个方面的知识,是一个很好的学习和实践案例。通过这个系统,我们可以理解如何在Java中实现加密和解密流程,同时也能...
Java 实现文件的 RSA 和 DES 加密 在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的...
总之,Java实现DES对称加密涉及了密码学的基础知识,包括密钥生成、加密解密过程等。虽然DES的原始安全性已受到质疑,但它依然作为理解对称加密概念的一个实例。开发者应根据实际需求和安全标准选择合适的加密算法和...
在Java中,我们可以使用`javax.crypto`包中的`Cipher`类来实现3DES加密和解密。首先,我们需要创建一个`SecretKeySpec`对象,用于存储我们的密钥。密钥长度可以是128位(16字节),但3DES实际只使用其中的112位或168...
在Java中实现DES算法,主要涉及到`java.security`和`javax.crypto`这两个包。首先,我们需要创建一个`SecretKey`对象,这个对象包含了用于加密和解密的密钥。DES密钥长度固定为64位,但实际有效位只有56位,因为每8...
以下是使用Java实现DES加密的步骤: 1. **生成密钥**: 首先,我们需要一个密钥。在Java中,我们使用`KeyGenerator`类生成DES密钥。代码示例: ```java KeyGenerator keyGen = KeyGenerator.getInstance("DES")...
自己写的一个算法实现,一个.java文件,直接运行就行,能够任意给定密钥,给任意64位明文加密、解密。已经检验没问题,内含示例,稳的一批。
标题中的"DES.rar_DES java_DES JAVA_Des___JAVA_des_java des"表明这是一个关于Java实现DES加密算法的压缩包文件。DES(Data Encryption Standard)是一种广泛应用的块密码,它在1970年代由IBM开发,后来被美国国家...
在Java中实现DES加密,主要涉及到`javax.crypto`包中的类,如`KeyGenerator`用于生成密钥,`Cipher`用于进行加解密操作。首先,你需要生成一个DES密钥,这通常包括设定密钥长度(DES的标准长度为56位,但在Java中是...
"java实现DES加密算法" Java实现DES(Data Encryption Standard)加密算法是一种对称加密算法,该算法使用Feistel网络结构,通过分组网络和子密钥生成来实现加密和解密。下面是Java实现的DES加密算法的知识点: ...
JAVA实现DES加密 public class DES1 { public static final String KEY_ALGORITHM = "DES"; public static final String CIPHER_ALGORITHM="DES/ECB/PKCS5Padding"; private static Key toKey(byte[] key) ...
总的来说,通过Java实现DES算法,我们需要理解对称加密的概念,了解DES算法的基本工作原理,以及如何使用Java的加密API来操作这些算法。同时,为了保证安全性,现代加密通常使用更强大的算法如AES,以及更安全的密钥...
#### 二、Java实现DES算法的关键点 ##### 1. 密钥生成 在Java中,可以使用`KeyGenerator`类来生成DES密钥。该类提供了初始化密钥生成器的方法,可以通过指定加密算法名称来创建特定类型的密钥生成器实例。 ```java...
这个文件通常会定义一个类,包含静态方法来执行加密和解密操作,接收字节数组作为输入,返回加密或解密后的字节数组。类中可能还包含了一些辅助方法,如用于处理字节流、Base64编码等。 需要注意的是,DES由于其56...
1. 密钥生成:首先,你需要创建一个3DES密钥。Java的`javax.crypto.SecretKeyFactory`和`javax.crypto.spec.DESedeKeySpec`类可用于此目的。你可以生成一个24字节的密钥,前16字节作为第一个密钥,中间8字节为第二个...
本教程主要探讨了如何使用Java编程语言实现DES(Data Encryption Standard)、3DES(Triple DES)和AES(Advanced Encryption Standard)这三种常见的对称加密算法,并且详细讲解了五种分组密码的工作模式。...
Java写的DES的一个类”表明了这个压缩包包含两个部分:一个是使用Delphi编程语言编写的用于执行DES(Data Encryption Standard)加密和解密的小程序,另一个是用Java实现的DES加密类。DES是一种广泛使用的对称加密...