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

RSA加密的方式和解密方式實(shí)現(xiàn)方法(推薦)

 更新時間:2017年06月12日 08:38:51   投稿:jingxian  
下面小編就為大家?guī)硪黄猂SA加密的方式和解密方式實(shí)現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

RSAsecurity.java

package com.mstf.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 com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
 
/*RSA 工具類。提供加密,解密,生成密鑰對等方法。
RSA加密原理概述 
RSA的安全性依賴于大數(shù)的分解,公鑰和私鑰都是兩個大素?cái)?shù)(大于100的十進(jìn)制位)的函數(shù)。
據(jù)猜測,從一個密鑰和密文推斷出明文的難度等同于分解兩個大素?cái)?shù)的積 
密鑰的產(chǎn)生: 
 1.選擇兩個大素?cái)?shù) p,q ,計(jì)算 n=p*q; 
 2.隨機(jī)選擇加密密鑰 e ,要求 e 和 (p-1)*(q-1)互質(zhì) 
 3.利用 Euclid 算法計(jì)算解密密鑰 d , 使其滿足 e*d = 1(mod(p-1)*(q-1)) (其中 n,d 也要互質(zhì)) 
 4:至此得出公鑰為 (n,e) 私鑰為 (n,d) 
 RSA速度 
 * 由于進(jìn)行的都是大數(shù)計(jì)算,使得RSA最快的情況也比DES慢上100倍,無論 是軟件還是硬件實(shí)現(xiàn)。 
 * 速度一直是RSA的缺陷。一般來說只用于少量數(shù)據(jù) 加密。*/
public class RSAsecurity {
 
 public static String src = "admin";
 
 public void priENpubDE() {
 
  try {
   // 初始化秘鑰
   KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
   // 秘鑰長度
   keyPairGenerator.initialize(1024);
   // 初始化秘鑰對
   KeyPair keyPair = keyPairGenerator.generateKeyPair();
   // 公鑰
   RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
   // 私鑰
   RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();
 
   // 2.私鑰加密,公鑰解密----加密
   // 生成私鑰
   PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());
   KeyFactory keyFactory = KeyFactory.getInstance("RSA");
   PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
   // Cipher類為加密和解密提供密碼功能,通過getinstance實(shí)例化對象
   Cipher cipher = Cipher.getInstance("RSA");
   // 初始化加密
   cipher.init(Cipher.ENCRYPT_MODE, privateKey);
   byte[] result = cipher.doFinal(src.getBytes());
   System.out.println("私鑰加密,公鑰解密----加密:" + Base64.encode(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));
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 
 }
 
 public void pubENpriDE() {
  try {
   // 1.初始化秘鑰
   KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
   // 秘鑰長度
   keyPairGenerator.initialize(512);
   // 初始化秘鑰對
   KeyPair keyPair = keyPairGenerator.generateKeyPair();
   // 公鑰
   RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
   // 私鑰
   RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();
 
   // 2.公鑰加密,私鑰解密----加密
   X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());
   KeyFactory keyFactory = KeyFactory.getInstance("RSA");
   PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
   // 初始化加密
   // Cipher類為加密和解密提供密碼功能,通過getinstance實(shí)例化對象
   Cipher cipher = Cipher.getInstance("RSA");
   cipher.init(Cipher.ENCRYPT_MODE, publicKey);
   // 加密字符串
   byte[] result = cipher.doFinal(src.getBytes());
   System.out.println("公鑰加密,私鑰解密----加密:" + Base64.encode(result));
 
   // 3.公鑰加密,私鑰解密-----解密
   PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());
   keyFactory = KeyFactory.getInstance("RSA");
   PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
   // 初始化解密
   cipher.init(Cipher.DECRYPT_MODE, privateKey);
   // 解密字符串
   result = cipher.doFinal(result);
   System.out.println("公鑰加密,私鑰解密-----解密:" + new String(result));
 
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 
 }
}

RSAtest.java

package com.mstf.rsa;
 
import com.mstf.rsa.RSAsecurity;
 
public class RSAtest {
 public static void main(String[] args) {
  RSAsecurity rsAsecurity = new RSAsecurity();
  System.out.println("私鑰加密公鑰解密例:");
  rsAsecurity.priENpubDE();
  System.out.println("公鑰加密私鑰解密例:");
  rsAsecurity.pubENpriDE();
 }
}

以上這篇RSA加密的方式和解密方式實(shí)現(xiàn)方法(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • spring bean標(biāo)簽的primary屬性用法講解

    spring bean標(biāo)簽的primary屬性用法講解

    這篇文章主要介紹了spring bean標(biāo)簽的primary屬性用法講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 詳解Java深拷貝,淺拷貝和Cloneable接口

    詳解Java深拷貝,淺拷貝和Cloneable接口

    這篇文章主要為大家詳細(xì)介紹了Java中Cloneable接口以及深拷貝與淺拷貝的相關(guān)知識,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-08-08
  • 解決maven打包排除類不生效maven-compiler-plugin問題

    解決maven打包排除類不生效maven-compiler-plugin問題

    總結(jié):在Spring Boot項(xiàng)目B中作為項(xiàng)目A的依賴時,排除啟動類不生效的原因是被其他類引用或父POM引入,解決方法是跳過test編譯或注釋掉@SpringBootTest(classes={BApplication.class})
    2024-11-11
  • Java事件處理機(jī)制(自定義事件)實(shí)例詳解

    Java事件處理機(jī)制(自定義事件)實(shí)例詳解

    這篇文章主要介紹了Java事件處理機(jī)制(自定義事件)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • ElasticSearch啟動成功卻無法在瀏覽器訪問問題解決辦法

    ElasticSearch啟動成功卻無法在瀏覽器訪問問題解決辦法

    因工作的需要,要使用elasticsearch,安裝完了,啟動也成功了之后發(fā)現(xiàn)了問題,這篇文章主要給大家介紹了關(guān)于ElasticSearch啟動成功卻無法在瀏覽器訪問問題的解決辦法,需要的朋友可以參考下
    2024-10-10
  • Java常見面試題之final在java中的作用是什么

    Java常見面試題之final在java中的作用是什么

    這篇文章主要介紹了Java常見面試題之final在java中的作用是什么,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 如何使用ActiveMQ中間件方式發(fā)送郵件

    如何使用ActiveMQ中間件方式發(fā)送郵件

    這篇文章主要介紹了如何使用ActiveMQ中間件方式發(fā)送郵件的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java -length的三種用法說明

    java -length的三種用法說明

    這篇文章主要介紹了java -length的三種用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 不看后悔!揭秘游戲服務(wù)器開發(fā)

    不看后悔!揭秘游戲服務(wù)器開發(fā)

    剛開始時以為做游戲服務(wù)器和做web差不多,但是經(jīng)過一段時間之后,才發(fā)現(xiàn)代碼太多,太亂了,這里我把一些游戲開發(fā)方面的東西整理一下,希望能對那些想做游戲服務(wù)器開發(fā)的朋友有所幫助
    2021-06-06
  • IntelliJ IDEA之配置JDK的4種方式(小結(jié))

    IntelliJ IDEA之配置JDK的4種方式(小結(jié))

    這篇文章主要介紹了IntelliJ IDEA之配置JDK的4種方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評論

白银市| 贵港市| 厦门市| 元谋县| 塔河县| 高淳县| 渝中区| 融水| 内乡县| 湟源县| 扬中市| 巨鹿县| 赣州市| 怀化市| 三穗县| 专栏| 富裕县| 建宁县| 井陉县| 东光县| 班玛县| 澄城县| 大悟县| 山西省| 五指山市| 卫辉市| 洞口县| 东源县| 鸡西市| 青川县| 黄梅县| 临澧县| 阿克| 通州区| 岐山县| 甘洛县| 鄱阳县| 怀宁县| 鄂尔多斯市| 张北县| 辉南县|