资源简介
密钥分配(RSA+DES混合加密含源程序) - lly1122334的博客 - CSDN博客
http://blog.csdn.net/lly1122334/article/details/78959639
代码片段和文件信息
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
/**
* DES加密与解密采用base64编码
*
* @author XerCis
*/
public class DESProvider {
private static final String KEY_ALGORITHM = “DESede“;//指定算法为DESedge
private static int KEYSIZE = 168;//加密Key的长度
/**
*
* 生成对称密钥
* @return Mapject>
* @throws Exception
* @author XerCis
* @throws NoSuchAlgorithmException
*/
public static String generateKey() throws NoSuchAlgorithmException {
KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);
kg.init(KEYSIZE);//初始化密钥生成器
SecretKey k = kg.generateKey();//生成密钥
byte[] keyBytes = k.getEncoded();//获取二进制编码形式
return StreamUtil.byteTobase64(keyBytes);
}
/**
* 加密数据
* @param data 待加密数据
* @param key 密钥
* @return byte[] 加密后的数据
* */
public static byte[] encrypt(String dataString key) throws Exception{
byte[] bytes = data.getBytes(“UTF-8“);//将数据转换成字节数组
byte[] keyBytes = StreamUtil.base64ToByte(key);//还原密钥
DESedeKeySpec dks = new DESedeKeySpec(keyBytes);//实例化DES密钥
SecretKeyFactory skf = SecretKeyFactory.getInstance(KEY_ALGORITHM);//实例化密钥工厂
SecretKey sk = skf.generateSecret(dks);//生成密钥
Cipher cipher = Cipher.getInstance(KEY_ALGORITHM);//实例化
cipher.init(Cipher.ENCRYPT_MODE sk);//初始化,设置为加密模式
return cipher.doFinal(bytes);//执行操作
}
/**
* 解密数据
* @param data 待解密数据
* @param key 密钥
* @return String 解密后的数据
* */
public static String decrypt(byte[] dataString key) throws Exception{
byte[] keyBytes = StreamUtil.base64ToByte(key);//还原密钥
DESedeKeySpec dks = new DESedeKeySpec(keyBytes);//实例化DES密钥
SecretKeyFactory skf = SecretKeyFactory.getInstance(KEY_ALGORITHM);//实例化密钥工厂
SecretKey sk = skf.generateSecret(dks);//生成密钥
Cipher cipher = Cipher.getInstance(KEY_ALGORITHM);//实例化
cipher.init(Cipher.DECRYPT_MODE sk);//初始化,设置为解密模式
return new String(cipher.doFinal(data));//执行操作
}
public static void main(String[] args) throws Exception{
String symmetricKey = DESProvider.generateKey();
String data = “ SECRET DESede RAW YhOJtnk3uuPHXYoHDlIZ2lslPTduxxnQ “;
byte[] ctext = DESProvider.encrypt(data symmetricKey);
System.out.println(DESProvider.decrypt(ctext symmetricKey));
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 359 2018-01-03 11:36 KeyDistribution\.classpath
文件 391 2018-01-02 09:38 KeyDistribution\.project
文件 107 2018-01-03 09:45 KeyDistribution\.settings\org.eclipse.core.resources.prefs
文件 2851 2018-01-03 11:36 KeyDistribution\bin\DESProvider.class
文件 1917 2018-01-03 11:39 KeyDistribution\bin\Main.class
文件 5910 2018-01-03 11:41 KeyDistribution\bin\RSAProvider.class
文件 3614 2018-01-03 11:36 KeyDistribution\bin\StreamUtil.class
文件 284220 2011-10-08 17:41 KeyDistribution\lib\apache-commons-lang.jar
文件 589803 2018-01-03 11:26 KeyDistribution\lib\xstream-1.4.10.jar
文件 3174 2018-01-03 10:58 KeyDistribution\src\DESProvider.java
文件 1280 2018-01-03 11:30 KeyDistribution\src\Main.java
文件 6628 2018-01-03 11:41 KeyDistribution\src\RSAProvider.java
文件 3365 2018-01-03 11:19 KeyDistribution\src\StreamUtil.java
目录 0 2018-01-03 11:33 KeyDistribution\.settings
目录 0 2018-01-03 11:36 KeyDistribution\bin
目录 0 2018-01-03 11:35 KeyDistribution\lib
目录 0 2018-01-03 11:36 KeyDistribution\src
目录 0 2018-01-03 11:40 KeyDistribution
----------- --------- ---------- ----- ----
903619 18
评论
共有 条评论