• 大小: 5KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: C#  

资源简介

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

评论

共有 条评论