• 大小: 1.26MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-28
  • 语言: 其他
  • 标签: RSA  DEA  安全通信  

资源简介

发送方:
1.获取发送的原文
2.利用系统的随机数产生对称密钥
3.计算原文的摘要
4.用自己的私钥对摘要进行加密(签名)
5.用对称密钥对(原文和签名)进行加密
6.用对方的公钥对称密钥进行加密(加密密钥)
7.将密文(5)和加密密钥(6)一起发给对方

接收方:
1.用自己的私钥对加密密钥进行解密,得到对称密钥--也只有自己才能解密。
2.用对称密钥对密文进行解密,得到原文和签名。
3.计算原文的摘要
4.用对方的公钥对签名进行解密获取发送来的摘要--身份验证
5.将两个摘要进行对比--验证原文的完整性。

资源截图

代码片段和文件信息

package com.cn.sec.rsa;

import java.io.UnsupportedEncodingException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;


public class AES {
/**
 * 加密
 * 
 * @param content
 *            需要加密的内容
 * @param password
 *            加密密码
 * @return
 */
public static byte[] encrypt(byte[] data byte[] key) {
CheckUtils.notEmpty(data “data“);
CheckUtils.notEmpty(key “key“);
if(key.length!=16){
throw new RuntimeException(“Invalid AES key length (must be 16 bytes)“);
}
try {
SecretKeySpec secretKey = new SecretKeySpec(key “AES“); 
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec seckey = new SecretKeySpec(enCodeFormat“AES“);
Cipher cipher = Cipher.getInstance(ConfigureEncryptAndDecrypt.AES_ALGORITHM);// 创建密码器
cipher.init(Cipher.ENCRYPT_MODE seckey);// 初始化
byte[] result = cipher.doFinal(data);
return result; // 加密
} catch (Exception e){
throw new RuntimeException(“encrypt fail!“ e);
}
}

/**
 * 解密
 * 
 * @param content
 *            待解密内容
 * @param password
 *            解密密钥
 * @return
 */
public static byte[] decrypt(byte[] data byte[] key) {
CheckUtils.notEmpty(data “data“);
CheckUtils.notEmpty(key “key“);
if(key.length!=16){
throw new RuntimeException(“Invalid AES key length (must be 16 bytes)“);
}
try {
SecretKeySpec secretKey = new SecretKeySpec(key “AES“); 
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec seckey = new SecretKeySpec(enCodeFormat “AES“);
Cipher cipher = Cipher.getInstance(ConfigureEncryptAndDecrypt.AES_ALGORITHM);// 创建密码器
cipher.init(Cipher.DECRYPT_MODE seckey);// 初始化
byte[] result = cipher.doFinal(data);
return result; // 加密
} catch (Exception e){
throw new RuntimeException(“decrypt fail!“ e);
}
}

public static String encryptTobase64(String data String key){
try {
byte[] valueByte = encrypt(data.getBytes(ConfigureEncryptAndDecrypt.CHAR_ENCODING) key.getBytes(ConfigureEncryptAndDecrypt.CHAR_ENCODING));
return new String(base64.encode(valueByte));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(“encrypt fail!“ e);
}

}

public static String decryptFrombase64(String data String key){
try {
byte[] originalData = base64.decode(data.getBytes());
byte[] valueByte = decrypt(originalData key.getBytes(ConfigureEncryptAndDecrypt.CHAR_ENCODING));
return new String(valueByte ConfigureEncryptAndDecrypt.CHAR_ENCODING);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(“decrypt fail!“ e);
}
}

public static String encryptWithKeybase64(String data String key){
try {
byte[] valueByte = encrypt(data.getBytes(ConfigureEncryptAndDecrypt.CHAR_ENCODING) base64.decode(key.getBytes()));
return new String(base64.encode(valueByte));
} catch (UnsupportedEncodingEx

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        421  2016-04-21 17:32  encryption\.classpath

     文件        386  2016-04-21 17:28  encryption\.project

     文件        598  2016-04-21 17:28  encryption\.settings\org.eclipse.jdt.core.prefs

     文件       3628  2016-04-21 17:32  encryption\bin\com\cn\sec\rsa\AES.class

     文件       7960  2016-04-21 17:32  encryption\bin\com\cn\sec\rsa\base64.class

     文件       1825  2016-04-21 17:32  encryption\bin\com\cn\sec\rsa\Che001SignUtil.class

     文件       1424  2016-04-21 17:32  encryption\bin\com\cn\sec\rsa\CheckUtils.class

     文件        529  2016-04-21 17:32  encryption\bin\com\cn\sec\rsa\ConfigureEncryptAndDecrypt.class

     文件       9800  2016-04-21 17:32  encryption\bin\com\cn\sec\rsa\ConvertUtils.class

     文件       3888  2016-04-21 17:32  encryption\bin\com\cn\sec\rsa\Digest.class

     文件       2075  2016-04-21 17:32  encryption\bin\com\cn\sec\rsa\EncryptionUtil.class

     文件        620  2016-04-21 17:33  encryption\bin\com\cn\sec\rsa\EncryUtil$1.class

     文件       4262  2016-04-21 17:33  encryption\bin\com\cn\sec\rsa\EncryUtil.class

     文件       1065  2016-04-21 17:32  encryption\bin\com\cn\sec\rsa\RandomUtil.class

     文件       5227  2016-05-23 11:36  encryption\bin\com\cn\sec\rsa\RSA.class

     文件       2854  2016-05-23 11:27  encryption\bin\com\cn\sec\test\A.class

     文件        622  2016-05-23 11:24  encryption\bin\com\cn\sec\test\B$1.class

     文件       3457  2016-05-23 11:24  encryption\bin\com\cn\sec\test\B.class

     文件       1263  2016-05-23 11:00  encryption\bin\com\cn\sec\test\KeyGenerator.class

     文件     279193  2014-03-24 09:50  encryption\bin\commons-lang-2.5.jar

     文件     295771  2014-03-24 09:50  encryption\bin\fastjson-1.1.8.jar

     文件     124932  2014-03-24 09:50  encryption\bin\json-lib-2.1-jdk15.jar

     文件       4069  2016-04-21 17:30  encryption\src\com\cn\sec\rsa\AES.java

     文件      20565  2016-04-21 17:30  encryption\src\com\cn\sec\rsa\base64.java

     文件       1161  2016-04-21 17:32  encryption\src\com\cn\sec\rsa\Che001SignUtil.java

     文件       1139  2016-04-21 17:30  encryption\src\com\cn\sec\rsa\CheckUtils.java

     文件        259  2016-04-21 17:30  encryption\src\com\cn\sec\rsa\ConfigureEncryptAndDecrypt.java

     文件      10374  2016-04-21 17:30  encryption\src\com\cn\sec\rsa\ConvertUtils.java

     文件       4162  2016-04-21 17:30  encryption\src\com\cn\sec\rsa\Digest.java

     文件       1728  2016-04-21 17:30  encryption\src\com\cn\sec\rsa\EncryptionUtil.java

............此处省略26个文件信息

评论

共有 条评论