⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testrsa.java

📁 对称和非对称加密
💻 JAVA
字号:
package com.dmgc.security.cipher.unsymmetic.rsa.test;

import com.dmgc.security.cipher.unsymmetic.rsa.*;
import com.dmgc.security.cipher.util.*;
import java.io.*;

/**
 * <p>Title: DMGC SECURITY CIPHER LIB</p>
 * <p>Description: 上海信宁科技有限公司 安全密码库(JAVA version)</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: 上海信宁科技有限公司</p>
 * 本程序用于测试
 * @author 陆荣幸  周渊   潘勇
 * @version 1.0
 */

public class TestRSA {

  /**
   * 测试文件
   */
  private void testNewFileF()
  {

    String scr = "D:\\lurongxing.txt";
   String des = "D:\\lurongxing.cipher";
   String scrscr = "d:\\lurongxing.copy.txt";

    long starttime, endtime;
   //

   String e = "NewRSAKey.public";
   String d = "NewRSAKey.private";
   //
   //
    System.out.println("测试加密消息");
    starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    //
    RSAEncryption g1 = new RSAEncryption();
    //


      try {
        g1.NewFileEncryptionF(e, scr, des);
      }
      catch (IOException ex) {
        ex.printStackTrace();
      }
      catch (InvalidKeyFileException ex) {
         ex.printStackTrace();
      }



    endtime = System.currentTimeMillis();
    System.out.println("结束时间 " + endtime);
    System.out.println("总共时间为 " + (endtime - starttime));
    //
    System.out.println("测试解密消息");
    starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    RSADecryption g2 = new RSADecryption();


      try {
        g2.NewFileDecryptionF(d, des, scrscr);
      }
      catch (IOException ex1) {
        ex1.printStackTrace();
      }
      catch (InvalidKeyFileException ex1) {
         ex1.printStackTrace();
      }
      catch (InvalidCryptographException ex1) {
         ex1.printStackTrace();
      }

    endtime = System.currentTimeMillis();
    System.out.println("结束时间 " + endtime);
    System.out.println("总共时间为 " + (endtime - starttime));


  }



  /**
  * 测试处理消息,密钥为文件
  */
 private void testNewMessageF() {
   //
   String plainText = "Hello, world! I am a PHD, at shanghai jiaotong university";
   byte[] plainByte = plainText.getBytes();
   long starttime, endtime;
   //

   String e = "d:\\rsafile.public";
   String d = "d:\\rsafile.private";
   //
   System.out.println("测试加密消息");
   starttime = System.currentTimeMillis();
   System.out.println("开始时间 " + starttime);
   //
   RSAEncryption g1 = new RSAEncryption();
   //
   try {
     byte[] cipher = g1.NewMessageEncryptionF( e,
                                          plainByte);
     endtime = System.currentTimeMillis();
     System.out.println("结束时间 " + endtime);
     System.out.println("总共时间为 " + (endtime - starttime));
     //
     System.out.println("测试解密消息");
     starttime = System.currentTimeMillis();
     System.out.println("开始时间 " + starttime);
     RSADecryption g2 = new RSADecryption();
     try {
       byte[] plain = g2.NewMessageDecryptionF(
                                           d, cipher);
       endtime = System.currentTimeMillis();
       System.out.println("结束时间 " + endtime);
       System.out.println("总共时间为 " + (endtime - starttime));
       System.out.println("恢复明文为:");
       for (int i = 0; i < plain.length; i++) {
         System.out.print( (char) plain[i]);
       }

     }
     catch (InvalidCryptographException ex1) {
       ex1.printStackTrace();
     }

   }
   catch (MessageTooLongException ex1) {
     ex1.printStackTrace();
   }
   catch (FileNotFoundException ex1)
    {
      ex1.printStackTrace();
    }

    catch (Exception ex1)
    {
      ex1.printStackTrace();
    }


 }


  /**
   * 测试生成新的密钥文件
   */
  private void testNewKeyFileGeneator() {
    System.out.println("测试生成密钥文件");
    long starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    //
    int publickeyLength = 3;
    String keyname = "NewRSAKey";
    //
    RSAKeyPairGenerator g = new RSAKeyPairGenerator();
     g.getKeyNewPairFile(publickeyLength,keyname);
//    g.getKeyPairFile(publickeyLength, keyname);
    long endtime = System.currentTimeMillis();
    System.out.println("结束时间 " + endtime);
    System.out.println("总共时间为 " + (endtime - starttime));

  }



  /**
   * 测试生成密钥文件
   */
  private void testKeyFileGeneator() {
    System.out.println("测试生成密钥文件");
    long starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    //
    int publickeyLength = 3;
    String keyname = "RSAKey";
    //
    RSAKeyPairGenerator g = new RSAKeyPairGenerator();
    g.getKeyPairFile(publickeyLength, keyname);
    long endtime = System.currentTimeMillis();
    System.out.println("结束时间 " + endtime);
    System.out.println("总共时间为 " + (endtime - starttime));

  }
  /**
   * 测试文件
   */
  private void testFileF()
  {

    String scr = "D:\\test.pdf";
  String des = "D:\\test.cipher";
  String scrscr = "d:\\test.copy.pdf";

    long starttime, endtime;
   //
   String n = "RSAKey.modulus";
   String e = "RSAKey.public";
   String d = "RSAKey.private";
   //
   //
    System.out.println("测试加密消息");
    starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    //
    RSAEncryption g1 = new RSAEncryption();
    //

    try {
      g1.FileEncryptionF(n,e, scr, des);
    }
    catch (IOException ex2) {
      ex2.printStackTrace();
    }

    endtime = System.currentTimeMillis();
    System.out.println("结束时间 " + endtime);
    System.out.println("总共时间为 " + (endtime - starttime));
    //
    System.out.println("测试解密消息");
    starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    RSADecryption g2 = new RSADecryption();

    try {
      g2.FileDecryptionF(n,d, des, scrscr);
    }
    catch (IOException ex3) {
      ex3.printStackTrace();
    }
    catch (InvalidCryptographException ex3) {
      ex3.printStackTrace();
    }
    endtime = System.currentTimeMillis();
    System.out.println("结束时间 " + endtime);
    System.out.println("总共时间为 " + (endtime - starttime));


  }

  private void testFile() {
    String scr = "D:\\test.pdf";
    String des = "D:\\test.cipher";
    String scrscr = "d:\\test.copy.pdf";
    long starttime, endtime;
    //
    //
    System.out.println("测试生成密钥");
    starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    //
    int publickeyLength = 3;
    //
    RSAKeyPairGenerator g = new RSAKeyPairGenerator();
    DmgcMpInteger[] keys = g.getKeyPair(publickeyLength);
    endtime = System.currentTimeMillis();
    System.out.println("结束时间 " + endtime);
    System.out.println("总共时间为 " + (endtime - starttime));
    //
    System.out.println("测试加密消息");
    starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    //
    RSAEncryption g1 = new RSAEncryption();
    //

    try {
      g1.FileEncryption(keys[1].toString(), keys[2].toString(), scr, des);
    }
    catch (IOException ex2) {
      ex2.printStackTrace();
    }

    endtime = System.currentTimeMillis();
    System.out.println("结束时间 " + endtime);
    System.out.println("总共时间为 " + (endtime - starttime));
    //
    System.out.println("测试解密消息");
    starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    RSADecryption g2 = new RSADecryption();

    try {
      g2.FileDecryption(keys[1].toString(),
                        keys[3].toString(), des, scrscr);
    }
    catch (IOException ex3) {
      ex3.printStackTrace();
    }
    catch (InvalidCryptographException ex3) {
      ex3.printStackTrace();
    }
    endtime = System.currentTimeMillis();
    System.out.println("结束时间 " + endtime);
    System.out.println("总共时间为 " + (endtime - starttime));

  }

  /**
   * 测试处理消息,密钥为文件
   */
  private void testMessageF() {
    //
    String plainText = "Hello, world!";
    byte[] plainByte = plainText.getBytes();
    long starttime, endtime;
    //
    String n = "RSAKey.modulus";
    String e = "RSAKey.public";
    String d = "RSAKey.private";
    //
    System.out.println("测试加密消息");
    starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    //
    RSAEncryption g1 = new RSAEncryption();
    //
    try {
      byte[] cipher = g1.MessageEncryptionF(n, e,
                                           plainByte);
      endtime = System.currentTimeMillis();
      System.out.println("结束时间 " + endtime);
      System.out.println("总共时间为 " + (endtime - starttime));
      //
      System.out.println("测试解密消息");
      starttime = System.currentTimeMillis();
      System.out.println("开始时间 " + starttime);
      RSADecryption g2 = new RSADecryption();
      try {
        byte[] plain = g2.MessageDecryptionF(n,
                                            d, cipher);
        endtime = System.currentTimeMillis();
        System.out.println("结束时间 " + endtime);
        System.out.println("总共时间为 " + (endtime - starttime));
        System.out.println("恢复明文为:");
        for (int i = 0; i < plain.length; i++) {
          System.out.print( (char) plain[i]);
        }

      }
      catch (InvalidCryptographException ex1) {
        ex1.printStackTrace();
      }

    }
    catch (MessageTooLongException ex1) {
      ex1.printStackTrace();
    }
    catch (FileNotFoundException ex1)
     {
       ex1.printStackTrace();
     }

     catch (Exception ex1)
     {
       ex1.printStackTrace();
     }


  }

  /**
   * 测试消息处理
   */
  private void testMessage() {
    String plainText = "Hello, world!";
    byte[] plainByte = plainText.getBytes();
    //
    System.out.println("测试生成密钥");
    long starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    //
    int publickeyLength = 3;
    //
    RSAKeyPairGenerator g = new RSAKeyPairGenerator();
    DmgcMpInteger[] keys = g.getKeyPair(publickeyLength);
    long endtime = System.currentTimeMillis();
    System.out.println("结束时间 " + endtime);
    System.out.println("总共时间为 " + (endtime - starttime));
    //
    System.out.println("测试加密消息");
    starttime = System.currentTimeMillis();
    System.out.println("开始时间 " + starttime);
    //
    RSAEncryption g1 = new RSAEncryption();
    //
    try {
      byte[] cipher = g1.MessageEncryption(keys[1].toString(), keys[2].toString(),
                                           plainByte);
      endtime = System.currentTimeMillis();
      System.out.println("结束时间 " + endtime);
      System.out.println("总共时间为 " + (endtime - starttime));
      //
      System.out.println("测试解密消息");
      starttime = System.currentTimeMillis();
      System.out.println("开始时间 " + starttime);
      RSADecryption g2 = new RSADecryption();
      try {
        byte[] plain = g2.MessageDecryption(keys[1].toString(),
                                            keys[3].toString(), cipher);
        endtime = System.currentTimeMillis();
        System.out.println("结束时间 " + endtime);
        System.out.println("总共时间为 " + (endtime - starttime));
        System.out.println("恢复明文为:");
        for (int i = 0; i < plain.length; i++) {
          System.out.print( (char) plain[i]);
        }

      }
      catch (InvalidCryptographException ex1) {
        ex1.printStackTrace();
      }

    }
    catch (MessageTooLongException ex) {
      ex.printStackTrace();
    }

  }

  /**
   * 测试生成素数两种方法比较
   * 经济统计测试,
   * getFastBitPrime() 时间方差较小
   * getBitPrime()时间方差较大
   */
  private void testGeneratePrime() {
    //测试100次结果
    long i1=0 ,i2=0;
    for (int i = 0; i < 20; i++) {
      System.out.println("--------------------------------------------");
      System.out.println("getBitPrime测试生成密钥");
      long starttime = System.currentTimeMillis();
//   System.out.println("开始时间 " + starttime);
      DmgcMpInteger.getBitPrime(64);
      long endtime = System.currentTimeMillis();
//   System.out.println("结束时间 " + endtime);
      System.out.println("总共时间为 " + (endtime - starttime));
      i1 = i1 + endtime - starttime;

      System.out.println("getFastBitPrime测试生成密钥");
      starttime = System.currentTimeMillis();
//   System.out.println("开始时间 " + starttime);
      DmgcMpInteger.getFastBitPrime(64);
      endtime = System.currentTimeMillis();
//      System.out.println("结束时间 " + endtime);
      System.out.println("总共时间为 " + (endtime - starttime));
      i2 = i2 + endtime - starttime;

    }//for

    System.out.println("getBitPrime is " + (i1/1000)*20 + " "+ i1%20000);
    System.out.println("getBitPrime is " + (i2/1000)*20 + " "+ i2%20000);

  }




  /**
   * 构造函数
   */
  public TestRSA() {
//    testKeyFileGeneator();
//    testMessage();
//      testMessageF();
//     testFile();
//      testFileF();
 //    testNewKeyFileGeneator();
//   testNewMessageF();
 //    testNewFileF();
// testGeneratePrime();
  }

  /**
   * 测试主函数
   * @param args
   */
  public static void main(String[] args) {
    TestRSA testRSA1 = new TestRSA();
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -