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

java 非對(duì)稱加密算法RSA實(shí)現(xiàn)詳解

 更新時(shí)間:2019年07月27日 16:13:03   作者:小破孩123  
這篇文章主要介紹了java 非對(duì)稱加密算法RSA實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

現(xiàn)在就為大家介紹一種基于因子分解的RSA算法,這種加密算法有兩種實(shí)現(xiàn)形式:1、公鑰加密,私鑰解密;2、私鑰加密,公鑰解密。下面就為大家分析一下實(shí)現(xiàn)代碼,相對(duì)于DH算法,RSA顯得有些簡(jiǎn)單。
初始化密鑰:

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
      keyPairGenerator.initialize(512);
      KeyPair keyPair = keyPairGenerator.generateKeyPair();
      RSAPrivateKey rsaprivateKey = (RSAPrivateKey)keyPair.getPrivate();//私有密鑰
      RSAPublicKey rsapublicKey = (RSAPublicKey)keyPair.getPublic();//公有密鑰
      System.out.println("privateKey : "+Base64.encodeBase64String(rsaprivateKey.getEncoded()));
      System.out.println("publicKey : "+Base64.encodeBase64String(rsapublicKey.getEncoded()));

1、私鑰加密,公鑰解密:

//私鑰加密,公鑰解密--加密
      PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaprivateKey.getEncoded());
      KeyFactory privateKeyFactory = KeyFactory.getInstance("RSA");
      PrivateKey privateKey = privateKeyFactory.generatePrivate(pkcs8EncodedKeySpec);
      Cipher privateCipher = Cipher.getInstance("RSA");
      privateCipher.init(Cipher.ENCRYPT_MODE, privateKey);
      byte[] result = privateCipher.doFinal(src.getBytes());
      System.out.println("私鑰加密,公鑰解密--加密:"+Base64.encodeBase64String(result));
      
      //私鑰加密,公鑰解密--解密
      X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsapublicKey.getEncoded());
      KeyFactory publicKeyFactory = KeyFactory.getInstance("RSA");
      PublicKey publicKey = publicKeyFactory.generatePublic(x509EncodedKeySpec);
      Cipher publicCipher = Cipher.getInstance("RSA");
      publicCipher.init(Cipher.DECRYPT_MODE, publicKey);
      result = publicCipher.doFinal(result);
      System.out.println("私鑰加密,公鑰解密--解密:"+new String(result));

2、公鑰加密,私鑰解密:

//公鑰加密,私鑰解密---加密
      x509EncodedKeySpec = new X509EncodedKeySpec(rsapublicKey.getEncoded());
      publicKeyFactory = KeyFactory.getInstance("RSA");
      publicKey = publicKeyFactory.generatePublic(x509EncodedKeySpec);
      publicCipher = Cipher.getInstance("RSA");
      publicCipher.init(Cipher.ENCRYPT_MODE, publicKey);
      result = publicCipher.doFinal(src.getBytes());
      System.out.println("公鑰加密,私鑰解密---加密:"+Base64.encodeBase64String(result));
      
      //公鑰加密,私鑰解密---解密
      pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaprivateKey.getEncoded());
      privateKeyFactory = KeyFactory.getInstance("RSA");
      privateKey = privateKeyFactory.generatePrivate(pkcs8EncodedKeySpec);
      privateCipher = Cipher.getInstance("RSA");
      privateCipher.init(Cipher.DECRYPT_MODE, privateKey);
      result = privateCipher.doFinal(result);
      System.out.println("公鑰加密,私鑰解密---解密:"+new String(result));

根據(jù)輸出的結(jié)果不難發(fā)現(xiàn),公鑰和私鑰并不一致,私鑰的長(zhǎng)度要大于公鑰。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

延庆县| 尤溪县| 肃宁县| 红原县| 西青区| 呼伦贝尔市| 日照市| 册亨县| 镇康县| 芒康县| 岑巩县| 新绛县| 马公市| 泉州市| 定襄县| 额敏县| 栾城县| 同仁县| 长葛市| 洪泽县| 海城市| 高雄市| 革吉县| 海丰县| 红安县| 宁津县| 广宗县| 凭祥市| 新沂市| 海口市| 栾城县| 云霄县| 达孜县| 阿鲁科尔沁旗| 镇宁| 资源县| 北宁市| 武汉市| 山丹县| 宁国市| 新绛县|