• 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 }
  • 相关阅读:
    django上传下载大文件
    ssh隧道技术
    防止网站被抓
    lvm在线扩容
    Python之配置文件模块 ConfigParser
    Oracle常用查询
    Oracle_where子句
    Oracle_单行函数
    Oracle_多行函数
    Oracle_SQL92_连接查询
  • 原文地址:https://www.cnblogs.com/wings-ff/p/9229072.html
Copyright © 2020-2023  润新知