<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                1. 非對稱加密簡介 與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公鑰(publickey)和私鑰(privatekey)。公鑰 與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密;如果用私鑰對數據進行加密, 那么只有用對應的公鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加 密算法。 簡單理解為:加密和解密是不同的鑰匙。 常見算法:RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等 ![](https://box.kancloud.cn/b3d0d52f235fa10a48d4420e25677a11_485x268.jpg) 2. RSA算法簡介 RSA公鑰加密算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。 RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被ISO推薦為公鑰數據加密標準。 今天只有短的RSA鑰匙才可能被強力方式解破。到2017年為止,世界上還沒有任何可靠的攻擊RSA算法的方式。只要其鑰匙的長度足夠長,用RSA加密的信息實際上是不能被解破的。但在分布式計算和量子計算機理論日趨成熟的今天,RSA加密安全性受到了挑戰。 RSA算法基于一個十分簡單的數論事實:將兩個大質數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。 http://blog.csdn.net/sunmenggmail/article/details/11994013 ![](https://box.kancloud.cn/95261b6d1cbca94a341511a303706773_280x280.jpg) 3. RSA加密算法的缺點 雖然RSA加密算法作為目前最優秀的公鑰方案之一,在發表四十年的時間里,經歷了各種攻擊的考驗,逐漸為人們接受。但是,也不是說RSA沒有任何缺點。由于沒有從理論上證明破譯RSA的難度與大數分解難度的等價性。所以,RSA的重大缺陷是無法從理論上把握它的保密性能如何。在實踐上,RSA也有一些缺點: 1. 產生密鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密; 2. 分組長度太大,為保證安全性,其內部運算代價很高,導致速度較慢。 4. RSA算法實現 ~~~ 1. package com; 2. 3. import java.io.UnsupportedEncodingException; 4. import java.security.InvalidKeyException; 5. import java.security.KeyPair; 6. import java.security.KeyPairGenerator; 7. import java.security.NoSuchAlgorithmException; 8. import java.security.PrivateKey; 9. import java.security.PublicKey; 10. 11. import javax.crypto.BadPaddingException; 12. import javax.crypto.Cipher; 13. import javax.crypto.IllegalBlockSizeException; 14. import javax.crypto.NoSuchPaddingException; 15. 16. public class RSATest { 17. 18. 19. public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, 20. InvalidKeyException, IllegalBlockSizeException, BadPaddingException, 21. UnsupportedEncodingException { 22. //要加密的字符串 23. String str = "你好黑馬"; 24. //使用密鑰生成工具,生成密鑰 25. KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); 26. //生成一對密鑰 27. KeyPair keyPair = keyPairGenerator.generateKeyPair(); 28. //獲取私鑰 29. PrivateKey privateKey = keyPair.getPrivate(); 30. //獲取公鑰 31. PublicKey publicKey = keyPair.getPublic(); 32. 33. String encrypted = encrypte(str,privateKey); 34. System.out.println("加密后:"+encrypted); 35. String decrypted = decrypte(encrypted,publicKey); 36. System.out.println("解密后:"+decrypted); 37. } 38. 39. private static String decrypte(String encrypted, PublicKey privateKey) throws 40. NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, 41. IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException { 42. Cipher cipher = Cipher.getInstance("RSA"); //設置為解密模式 44. cipher.init(Cipher.DECRYPT_MODE, privateKey); 45. byte[] doFinal = cipher.doFinal(Base64.decode(encrypted)); 46. return new String(doFinal); 47. } 48. 49. private static String encrypte(String str, PrivateKey privateKey) throws 50. NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, 51. IllegalBlockSizeException, BadPaddingException { 52. //獲取RSA加密算法 53. Cipher cipher = Cipher.getInstance("RSA"); 54. //初始化加密器 55. cipher.init(Cipher.ENCRYPT_MODE, privateKey); 56. //加密 57. byte[] doFinal = cipher.doFinal(str.getBytes()); 58. //對加密后的字節碼進行Base64編碼 59. return Base64.encode(doFinal); 60. } 61. } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看