zoukankan      html  css  js  c++  java
  • RSA加解密过程

     1 package com.pff.pff;
     2 
     3 import java.security.KeyFactory;
     4 import java.security.KeyPair;
     5 import java.security.KeyPairGenerator;
     6 import java.security.PrivateKey;
     7 import java.security.PublicKey;
     8 import java.security.spec.PKCS8EncodedKeySpec;
     9 import java.security.spec.X509EncodedKeySpec;
    10 
    11 import javax.crypto.Cipher;
    12 
    13 import org.apache.commons.codec.binary.Hex;
    14 
    15 public class Rsa {
    16     private static String test = "pff";
    17 
    18     public static void main(String[] args) {
    19         try {
    20             // 生成公私秘钥
    21             KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
    22             KeyPair generateKeyPair = keyPairGenerator.generateKeyPair();
    23             PrivateKey private1 = generateKeyPair.getPrivate();
    24             PublicKey public1 = generateKeyPair.getPublic();
    25             byte[] encoded1 = private1.getEncoded();
    26             byte[] encoded2 = public1.getEncoded();
    27             System.out.println("得到的私钥= " + Hex.encodeHexString(encoded1));
    28             System.out.println("得到的公钥= " + Hex.encodeHexString(encoded2));
    29             // 转换得到私钥
    30             PKCS8EncodedKeySpec pKCS8EncodedKeySpec = new PKCS8EncodedKeySpec(encoded1);
    31             KeyFactory instance = KeyFactory.getInstance("RSA");
    32             PrivateKey generatePrivate = instance.generatePrivate(pKCS8EncodedKeySpec);
    33             // 转换得到公钥
    34             X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(encoded2);
    35             PublicKey generatePublic = instance.generatePublic(x509EncodedKeySpec);
    36             // 私钥加密过程
    37             Cipher cipher = Cipher.getInstance("RSA");
    38             cipher.init(Cipher.ENCRYPT_MODE, generatePrivate);
    39             byte[] doFinal1 = cipher.doFinal(test.getBytes());
    40             System.out.println("私钥加密结果= " + Hex.encodeHexString(doFinal1));
    41             // 私钥解密过程
    42             cipher.init(Cipher.DECRYPT_MODE, generatePublic);
    43             byte[] doFinal2 = cipher.doFinal(doFinal1);
    44             System.out.println("公钥解密结果= " + new String(doFinal2));
    45             // 公钥加密
    46             cipher.init(Cipher.ENCRYPT_MODE, generatePublic);
    47             byte[] doFinal3 = cipher.doFinal(test.getBytes());
    48             System.out.println("公钥加密结果= " + Hex.encodeHexString(doFinal3));
    49             // 私钥解密
    50             cipher.init(Cipher.DECRYPT_MODE, generatePrivate);
    51             byte[] doFinal4 = cipher.doFinal(doFinal3);
    52             System.out.println("公钥解密结果= " + new String(doFinal4));
    53         } catch (Exception e) {
    54             e.printStackTrace();
    55         }
    56 
    57     }
    58 
    59 }
  • 相关阅读:
    自我介绍
    目前流行的源程序版本管理软件和项目管理软件的优缺点
    四月是你的谎言
    软件分析(Mobile Apps )--百词斩
    程序扩展
    超级无敌小学四则运算题目程序
    4组 团队展示
    2020面向对象设计与构造 第四单元 & 课程 博客总结
    2020面向对象设计与构造 第三单元 博客总结
    2020面向对象设计与构造 第二单元 博客总结
  • 原文地址:https://www.cnblogs.com/wings-ff/p/9229072.html
Copyright © 2011-2022 走看看