数字信封加密技术(RSA和DES结合起…

本文详细介绍了数字信封技术,该技术结合了RSA和DES加密算法的优势。通过五个步骤展示了如何生成DES密钥和RSA密钥对,接着使用DES密钥加密重要数据,再用RSA公钥加密DES密钥,最后利用RSA私钥解密获取DES密钥以解密数据。整个过程确保了数据的安全传输。
摘要由CSDN通过智能技术生成

数字信封加密技术(RSA和DES结合起来的算法)

这种算法结合了DES和RSA两种算法的优点于一身

原理为:

!.发送者利用DES密钥对重要数据进行加密

2.发送者利用RSA公钥对DES密钥进行加密

3.传送消息

4.接收者收到消息后,利用RSA私钥对经过加密的DES密钥进行解密

5.接收者利用RSA密钥解密解得的DES密钥对重要数据进行解密

 

在此文中,先产生,本次模拟所要的DES密钥和RSA密钥

然后按照上面五个步骤进行模拟:

 

1.产生DES密钥

 


package digital.envolope.technology;

import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;


public class GenerateDESKey {//产生DES密钥

    public static void main(String[] args) {
        try {
            //密钥生成器
            KeyGenerator kg = KeyGenerator.getInstance("DESede"); //采用双重des加密算法
            //设置密钥长度为168位
            kg.init(168);
           //生成密钥
            SecretKey k=kg.generateKey();

            //将密钥保存在文件中
            File dir=new File("digitalEnvolope");
          boolean pass= dir.mkdir();//创建目录
          if(!pass){
              File file=new File(dir,"key.dat");
            FileOutputStream out=new FileOutputStream(file);
            ObjectOutputStream OOS=new ObjectOutputStream(out);
            OOS.writeObject(k);//必须以可序列化对象的形式写入,否则在用ObjectInputStream读取时会抛出异常
            out.close();
            OOS.close();
          }
        } catch (Exception ex) {
            Logger.getLogger(GenerateDESKey.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
}

 

 

2.产生RSR密钥对

 

package digital.envolope.technology;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

import java.io.File;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.logging.Level;
import java.util.logging.Logger;


public class GenKey {
    public static void main(String[] args){
        try {
            //创建密钥对生成器
            KeyPairGenerator KPG = KeyPairGenerator.getInstance("RSA");
            //初始化密钥生成器
            KPG.initialize(1024);
            //生成密钥对
            KeyPair KP=KPG.genKeyPair();
            //获取公钥和密钥
            PublicKey pbKey=KP.getPublic();
            PrivateKey prKey=KP.getPrivate();
            //保存公钥到文件

            File file=new File("digitalEnvolope","RSAPublic.dat");
            FileOutputStream out=new FileOutputStream(file);
            ObjectOutputStream fileOut=new ObjectOutputStream(out);
            fileOut.writeObject(pbKey);
            //保存密钥到文件

  

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值