资源简介
rsa,dh算法过程的简易阐述,适合大学计算机课程设计
rsa算法优点:不需要进行密钥传递,提高了安全性,可以进行数字签名认证
dh算法优点:可以进行密钥交换
代码片段和文件信息
/*
* To change this license header choose License Headers in Project Properties.
* To change this template file choose Tools | Templates
* and open the template in the editor.
*/
package rsa_ed;
/**
*
* @author judylily
*/
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.Cipher;
import javax.crypto.KeyAgreement;
import javax.crypto.SecretKey;
import javax.crypto.interfaces.DHPrivateKey;
import javax.crypto.interfaces.DHPublicKey;
import javax.crypto.spec.DHParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public abstract class DH {
/**
* 非对称加密密钥算法
*/
private static final String KEY_ALGORITHM = “DH“;
/**
* 本地密钥算法,即对称加密密钥算法
* 可选DES、DESede或者AES
*/
private static final String SELECT_ALGORITHM = “AES“;
/**
* 密钥长度
*/
private static final int KEY_SIZE = 512;
//公钥
private static final String PUBLIC_KEY = “DHPublicKey“;
//私钥
private static final String PRIVATE_KEY = “DHPrivateKey“;
/**
* 初始化甲方密钥
* @return Map 甲方密钥Map
* @throws Exception
*/
public static Mapject> initKey() throws Exception{
//实例化密钥对生成器
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
//初始化密钥对生成器
keyPairGenerator.initialize(KEY_SIZE);
//生成密钥对
KeyPair keyPair = keyPairGenerator.generateKeyPair();
//甲方公钥
DHPublicKey publicKey = (DHPublicKey)keyPair.getPublic();
//甲方私钥
DHPrivateKey privateKey = (DHPrivateKey)keyPair.getPrivate();
//将密钥对存储在Map中
Mapject> keyMap = new HashMapject>(2);
keyMap.put(PUBLIC_KEY publicKey);
keyMap.put(PRIVATE_KEY privateKey);
return keyMap;
}
/**
* 初始化乙方密钥
* @param key 甲方公钥
* @return Map 乙方密钥Map
* @throws Exception
*/
public static Mapject> initKey(byte[] key) throws Exception{
//解析甲方公钥
//转换公钥材料
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key);
//实例化密钥工厂
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
//产生公钥
PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);
//由甲方公钥构建乙方密钥
DHParameterSpec dhParameterSpec = ((DHPublicKey)pubKey).getParams();
//实例化密钥对生成器
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
//初始化密钥对生成器
keyPairGenerator.initialize(KEY_SIZE);
//产生密钥对
KeyPair keyPair = keyPairGenerator.generateKeyPair();
//乙方公钥
DHPublicKey publicKey = (DHPublicKey) keyPair.getPublic();
//乙方私约
DHPrivateKey privateKey = (DHPrivateKey) keyPair.getPrivate();
//将密钥对存储在Map中
Mapject> keyMap = new HashMapject>(2);
keyMap.put(PUBLIC_KEY publicKey);
keyMap.put(PRIVATE_KEY privateKey);
return keyMap;
}
/**
* 加密
* @param data 待加密数据
* @param key 密钥
*
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-06-17 07:36 rsa_dh_\
文件 210 2020-06-17 07:36 __MACOSX\._rsa_dh_
文件 5955 2020-06-17 06:24 rsa_dh_\DH.java
文件 3548 2020-06-17 06:38 rsa_dh_\DHTest.java
文件 4245 2020-06-16 17:23 rsa_dh_\RSA.java
- 上一篇:FHK.ttfArcGis符号显示错误需安装此字体
- 下一篇:gui显示文本动态框
相关资源
- Gmap.net.windowsforms.dll
- bootloader+上位机.rar
- .net版本实现远程控制关闭与重启计算
- speechChange_dealtime
- ECDSA签名
- OPCDAAuto.dll(v2.2.5.30) 测试好用的
- .NET毕业实习报告
- 利用ListBox控件实现数据源字段的选择
- 基于impinj的RFID的RSSI测距
- Interop.Shell32.dll
- WebBrowser网页操作(提取元素自动填表
- 密码管理工具源码
- 竖式计算器
- 串口上位机实时图像显示温度 -1.rar
- visual studio 2017社区版
- 解析空中三角测量程序设计.zip
- 成语接龙.zip
- 生长法生成TIN三角网
- S7.Net.dll
- ModbusRTU协议中浮点数转换
- SMPP短信客户端,可直接用于你的应用
- CSharp英文背单词源代码
- RSA加密算法演示程序使用了两种求模
- 基于TCP协议的客户端demo,内涵服务端
- 单位点餐系统
- 基于FPGA的RSA加密算法的实现
- 实验2,TCP+UDP通信实验
- 基于UDP,P2P的网络通信
- 北邮 专业实验 数字信号发生器
- 北邮 专业实验 设计电路并输出到模拟
评论
共有 条评论