用java实现des加密和解密

谁可以帮我写一个这样的类

一个用DES来加密、解密的类
http://www.javanb.com/java/1/17816.html

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;
}

比较长, 转了一部分.

参考资料:http://www.javanb.com/java/1/17816.html

温馨提示:内容为网友见解,仅供参考
无其他回答

如何用Java进行3DES加密解密
import java.security.Security;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;\/*字符串 DESede(3DES) 加密 ECB模式\/使用PKCS7方式填充不足位,目前给的密钥是192位 3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的...

Java 接口数据加密和解密
步骤如下:1. 从gitee.com\/zhao_jian_jun...拉取代码至本地。2. 使用meavn的install将项目打包为.jar文件。3. 将加解密依赖引入至项目中。4. 在配置文件中说明使用的加密方式的秘钥。RSA为非对称加密,需提供两个秘钥。变量名如下:5. 对请求相应结果加密,使用@ZjjEncryptResponse注解并指定加密...

用java实现des算法
import java.io.*;import java.nio.*;import java.nio.channels.FileChannel;public class FileDES{ private static final boolean enc=true; \/\/加密 private static final boolean dec=false; \/\/解密 private String srcFileName;private String destFileName;private String inKey;private boolean ...

如何使用JAVA实现对字符串的DES加密和解密
http:\/\/blog.csdn.net\/shibenjie\/article\/details\/5365355

DES加密算法 java实现
\/\/ 所以 用DES加密解密时,可以把加密所得的8位进进制数,转成 \/\/ 两位16进制数进行保存,传输。\/\/ 具体方法:1 把一个字符串转成8位二进制数,用DES加密,得到8位二进制数的 \/\/ 密文 \/\/ 2 然后把(由1)所得的密文转成两位十六进制字符串 \/\/ 3 解密时,把(由2)所得的两位十六进制...

如何用JAVA实现字符串简单加密解密?
\/\/ 用密匙加密信息"Hello world!" String str1 = jiami.encryptToDES(key, "Hello"); System.out.println("使用des加密信息Hello为:" + str1); \/\/ 使用这个密匙解密 String str2 = jiami.decryptByDES(key, str1); System.out.println("解密后为:" + str2); \/\/ 创建公匙和私匙 jiami.createPair...

用java实现des加密和解密
一个用DES来加密、解密的类 http:\/\/www.javanb.com\/java\/1\/17816.html 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 { p...

如何用Java进行3DES加密解
n = 0; n < b.length; n++) { stmp = Integer.toHexString(b[n] & 0xFF); if (stmp.length() == 1) hs += ("0" + stmp); else hs += stmp; } return hs.toUpperCase(); }3DES的加密密钥长度要求是24个字节,本例中因为给定的密钥只有16个字节,所以需要填补至24个字节。

Java中 DES加密算法
\/\/使用对称秘钥解密 import java.io.*;import java.security.*;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;public class SDec { public static void main(String args[])throws Exception { FileInputStream f=new FileInputStream("SEnc.txt");int num=f.available();byte[...

如何用Java进行3DES加密解
http:\/\/www.tropsoft.com\/strongenc\/des.htm ECB是其中一种字串分割方式,除了DES以外,其他加密方式也会使用这种分割方式的,而Java默认产生的DES算法就是用ECB方法,ECB不需要向量,当然也就不支持向量了 除了ECB,DES还支持CBC、CFB、OFB,而3DES只支持ECB和CBC两种 http:\/\/www.tropsoft.com\/...

相似回答