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

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

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

原理为:

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

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

3.传送消息

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

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

 

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

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

 

1.产生DES密钥

 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
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;

/**
 *
 * @author Administrator
 */
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密钥对

 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

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;

/**
 *
 * @author Administrator
 */
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();
   

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值