非对称加密和解密之RSA

说明:本人使用的是hutool的工具类,Hutool官网

这里演示怎么使用

1.自动生成公钥和私钥进行字符串加密和解密

1.1代码如下


  public static void main(String[] args) {

    String str = "地球人";                                           // 创建测试数据

    // 方法一: 从RSA对象中获得随机生成的 公钥 和 私钥  start
    RSA rsa = SecureUtil.rsa();                                     // 生成RSA对象
//    PrivateKey privateKey = rsa.getPrivateKey();                  // 自动生成的私钥
    String privateKey = rsa.getPrivateKeyBase64();                  // 或者使用字符串privateKey
//    PublicKey publicKey = rsa.getPublicKey();                     // 自动生成的公钥
    String publicKey = rsa.getPublicKeyBase64();                    // 或者使用字符串publicKey
    // 方法一: 从RSA对象中获得随机生成的 公钥 和 私钥  start


    // 方法二: 不从对象中获得 公钥 和 私钥  直接根据算法RSA随机生成 公钥 和 私钥  start
//    KeyPair pair = SecureUtil.generateKeyPair("RSA");
//    PrivateKey privateKey = pair.getPrivate();
//    PublicKey publicKey = pair.getPublic();
    // 方法二: 不从对象中获得 公钥 和 私钥  直接根据算法RSA随机生成 公钥 和 私钥  start


    // PS: 方法一和方法二可以任远其中一个

    RSA encryRSA = new RSA(null, publicKey);            // 创建新的RSA对象用于加密数据
    String encryptData = encryRSA.encryptBcd(str, KeyType.PublicKey);


    RSA decryRSA = new RSA(privateKey, null);           // 创建新的RSA对象用于解密数据
    String decryptData = decryRSA.decryptStr(encryptData, KeyType.PrivateKey);
    System.out.println(decryptData);                      // 输出 地球人

  }

 

 

2.自动生成公钥和私钥进行字符数组加密和解密

2.1代码如下

    String str = "地球人";
    byte[] bytes = str.getBytes(CharsetUtil.CHARSET_UTF_8);

    RSA rsa = SecureUtil.rsa();                                     // 生成RSA对象
//    PrivateKey privateKey = rsa.getPrivateKey();                  // 自动生成的私钥
    String privateKey = rsa.getPrivateKeyBase64();                  // 或者使用字符串privateKey
//    PublicKey publicKey = rsa.getPublicKey();                     // 自动生成的公钥
    String publicKey = rsa.getPublicKeyBase64();                    // 或者使用字符串publicKey

    RSA encryRSA = new RSA(null, publicKey);            // 创建新的RSA对象用于加密数据
    byte[] encrypt = encryRSA.encrypt(bytes, KeyType.PublicKey);


    RSA decryRSA = new RSA(privateKey, null);           // 创建新的RSA对象用于解密数据
    byte[] decrypt = decryRSA.decrypt(encrypt, KeyType.PrivateKey);
    System.out.println(new String(decrypt, CharsetUtil.CHARSET_UTF_8));

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值