最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)RSA算法的方法詳解

 更新時(shí)間:2018年03月30日 15:02:57   作者:chengqiuming  
這篇文章主要介紹了Java實(shí)現(xiàn)RSA算法的方法,結(jié)合實(shí)例形式分析了RSA算法的原理、實(shí)現(xiàn)與使用方法,需要的朋友可以參考下

本文實(shí)例講述了Java實(shí)現(xiàn)RSA算法的方法。分享給大家供大家參考,具體如下:

一 介紹

唯一廣泛接受并實(shí)現(xiàn)
用于數(shù)據(jù)加密和數(shù)字簽名
公鑰加密、私鑰解密
私鑰加密、公鑰解密

二 RSA參數(shù)說明

三 實(shí)現(xiàn)

package com.imooc.security.rsa;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;
import org.apache.commons.codec.binary.Base64;
public class ImoocRSA {
  private static String src = "cakin24 security rsa";
  public static void main(String[] args) {
    jdkRSA();
  }
  public static void jdkRSA() {
    try {
      //1.初始化密鑰
      KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
      keyPairGenerator.initialize(512);
      KeyPair keyPair = keyPairGenerator.generateKeyPair();
      RSAPublicKey rsaPublicKey = (RSAPublicKey)keyPair.getPublic();
      RSAPrivateKey rsaPrivateKey = (RSAPrivateKey)keyPair.getPrivate();
      System.out.println("Public Key : " + Base64.encodeBase64String(rsaPublicKey.getEncoded()));
      System.out.println("Private Key : " + Base64.encodeBase64String(rsaPrivateKey.getEncoded()));
      //2.私鑰加密、公鑰解密——加密
      PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());
      KeyFactory keyFactory = KeyFactory.getInstance("RSA");
      PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
      Cipher cipher = Cipher.getInstance("RSA");
      cipher.init(Cipher.ENCRYPT_MODE, privateKey);
      byte[] result = cipher.doFinal(src.getBytes());
      System.out.println("私鑰加密、公鑰解密——加密 : " + Base64.encodeBase64String(result));
      //3.私鑰加密、公鑰解密——解密
      X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());
      keyFactory = KeyFactory.getInstance("RSA");
      PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
      cipher = Cipher.getInstance("RSA");
      cipher.init(Cipher.DECRYPT_MODE, publicKey);
      result = cipher.doFinal(result);
      System.out.println("私鑰加密、公鑰解密——解密:" + new String(result));
      //4.公鑰加密、私鑰解密——加密
      x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());
      keyFactory = KeyFactory.getInstance("RSA");
      publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
      cipher = Cipher.getInstance("RSA");
      cipher.init(Cipher.ENCRYPT_MODE, publicKey);
      result = cipher.doFinal(src.getBytes());
      System.out.println("公鑰加密、私鑰解密——加密 : " + Base64.encodeBase64String(result));
      //5.公鑰加密、私鑰解密——解密
      pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());
      keyFactory = KeyFactory.getInstance("RSA");
      privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
      cipher = Cipher.getInstance("RSA");
      cipher.init(Cipher.DECRYPT_MODE, privateKey);
      result = cipher.doFinal(result);
      System.out.println("公鑰加密、私鑰解密——解密:" + new String(result));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

四 實(shí)現(xiàn)效果

Public Key : MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJcBeOb97IdkkirBmx3MOY5e4eRwh0uvC2BcNlY1rDo0lZ8ibR1bl1RJXWkHv7U0ASO/5DBlnnnGbQRtsJlsCPMCAwEAAQ==
Private Key : MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAlwF45v3sh2SSKsGbHcw5jl7h5HCHS68LYFw2VjWsOjSVnyJtHVuXVEldaQe/tTQBI7/kMGWeecZtBG2wmWwI8wIDAQABAkAdSkPRSl+ew3s2n+cemIZxfyYB0XHs1D84qapAfpixkUNvWL0A4ovrwsnwt4MEjAtWVTufNvTxIZcZdx+Q5DbBAiEA9TzzYMGRU+3mdlAx0ICF+NIqwvlqyvedKa4KSx55gVUCIQCdoeX6mqGRP78aQjYKWeogwliszjU5fN/LFvKZrcgBJwIhAMvbBLzzaykHY0IKW75kd/lkSyOUTY+20bAp+miDRqGZAiA6r36eeRkzqUbtcL8LxYPb5F79HtxD5dCvnIB/ZGp0uwIgWtXI7IxHjYCsNomSJdu1J3dU9KqQuW/eOHxrk/OgUYE=
私鑰加密、公鑰解密——加密 : VjkFsOiVeLvKES5RprhsJK9tdTzohdELLS7yluidCYEe7DkuCM9srj8kwadynHI4M0oLAfJhK6447hp7Ia8x7A==
私鑰加密、公鑰解密——解密:cakin24 security rsa
公鑰加密、私鑰解密——加密 : gAWl73UxHtO+EfKkpmfMdhtK0Vh7HB8n+30l1Hp8aAMIagD21h2x/q/Ns+soGsOXNovuNzaSGZenmZzcjB4VEA==
公鑰加密、私鑰解密——解密:cakin24 security rsa

五 應(yīng)用場(chǎng)景

PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:

在線RSA加密/解密工具:
http://tools.jb51.net/password/rsa_encode

文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password

在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java字符與字符串操作技巧總結(jié)》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • SpringCloud及Nacos服務(wù)注冊(cè)IP選擇問題解決方法

    SpringCloud及Nacos服務(wù)注冊(cè)IP選擇問題解決方法

    這篇文章主要介紹了SpringCloud及Nacos服務(wù)注冊(cè)IP選擇問題,為什么注冊(cè)的IP和真實(shí)IP不符合呢,原因是Nacos客戶端在注冊(cè)服務(wù)時(shí)會(huì)從機(jī)器網(wǎng)卡中選擇一個(gè)IP來注冊(cè),所以,當(dāng)注冊(cè)了的是非真實(shí)IP后,另一臺(tái)機(jī)器調(diào)用時(shí)是不可能調(diào)通的,知道問題原因就是解決方法,一起看看吧
    2024-01-01
  • java方法重寫時(shí)需要注意的問題

    java方法重寫時(shí)需要注意的問題

    大家好,本篇文章主要講的是java方法重寫時(shí)需要注意的問題,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Spring 配置文件字段注入到List、Map

    Spring 配置文件字段注入到List、Map

    這篇文章主要介紹了Spring 配置文件字段注入到List、Map,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Spring Boot框架中的@Conditional注解示例詳解

    Spring Boot框架中的@Conditional注解示例詳解

    這篇文章主要介紹了Spring Boot框架中的@Conditional系列注解,@ConditionalOnProperty注解的作用是解析application.yml/application.properties 里的配置生成條件來生效,也是與@Configuration注解一起使用,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友一起看看吧
    2022-09-09
  • 詳解Java的內(nèi)置異常以及創(chuàng)建自定義異常子類的方法

    詳解Java的內(nèi)置異常以及創(chuàng)建自定義異常子類的方法

    這篇文章主要介紹了詳解Java的內(nèi)置異常以及創(chuàng)建自定義異常子類的方法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • Spring Cloud Feign簡(jiǎn)單使用詳解

    Spring Cloud Feign簡(jiǎn)單使用詳解

    本篇文章主要介紹了Spring Cloud Feign簡(jiǎn)單使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • SpringBoot接口返回?cái)?shù)據(jù)脫敏(Mybatis、Jackson)

    SpringBoot接口返回?cái)?shù)據(jù)脫敏(Mybatis、Jackson)

    有時(shí)候,我們接口返回的數(shù)據(jù)需要做一些處理,有一些敏感數(shù)據(jù),本文主要介紹了SpringBoot接口返回?cái)?shù)據(jù)脫敏(Mybatis、Jackson),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Java通俗易懂系列設(shè)計(jì)模式之代理模式

    Java通俗易懂系列設(shè)計(jì)模式之代理模式

    這篇文章主要介紹了Java通俗易懂系列設(shè)計(jì)模式之代理模式,對(duì)設(shè)計(jì)模式感興趣的同學(xué),一定要看下
    2021-04-04
  • MyBatis插件機(jī)制超詳細(xì)講解

    MyBatis插件機(jī)制超詳細(xì)講解

    MyBatis在四大對(duì)象的創(chuàng)建過程中,都會(huì)有插件進(jìn)行介入。插件可以利用動(dòng)態(tài)代理機(jī)制一層層的包裝目標(biāo)對(duì)象,而實(shí)現(xiàn)在目標(biāo)對(duì)象執(zhí)行目標(biāo)方法之前進(jìn)行攔截的效果
    2022-11-11
  • 使用@pathvariable與@requestparam碰到的一些問題及解決

    使用@pathvariable與@requestparam碰到的一些問題及解決

    這篇文章主要介紹了使用@pathvariable與@requestparam碰到的一些問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論

岳阳市| 深水埗区| 明溪县| 大悟县| 沽源县| 上蔡县| 高平市| 婺源县| 台北市| 丰镇市| 祁门县| 上犹县| 唐海县| 泰顺县| 新蔡县| 余干县| 开阳县| 福贡县| 张家口市| 遂宁市| 延庆县| 德钦县| 松滋市| 霍邱县| 常山县| 札达县| 平利县| 临高县| 新泰市| 昌宁县| 文登市| 隆德县| 郁南县| 门头沟区| 泰兴市| 镇平县| 南宫市| 大足县| 松原市| 阜宁县| 文成县|