項目:保密

首先介紹一下加密相關的知識:

     1、加密分爲對稱加密和非對稱加密

         對稱加密:雙方使用同一種加密/解密規則,對信息進行加密和解密。

         非對稱加密:一方生成兩把密鑰(公鑰和私鑰),公鑰是公開的,私鑰是保密的;另一方獲取到公鑰,然後用它對信息加密;一方得到加密後的信息,用私鑰解密。

     2、RSA加密/解密公式

          加密:公鑰(E,N)------>   密文 = (明文^E) mod N

          解密:密鑰(D,N)------>   明文 = (密文^D) mod N

一、設計思路

     學完網絡課程,學到了網絡傳輸涉及到安全問題,裏面是通過加密算法實現數據的可靠傳輸,由於自己比較喜歡算法的研究,於是就自己結合知識實現了一個非對稱加密算法RSA。

二、設計平臺

     windows下vs2013實現RSA。

三、項目內容

     一、普通類型(int)的RSA

         1、產生兩個素數,隨機產生數字,對產生的數進行素數判斷;

         2、兩個素數的乘積產生N,根據歐拉函數求乘積,兩個素數減一的乘積

         3、求明文,根據互質的性質,從(1 < E < 乘積值)之間選取一個數使得E與乘積值互質

         4、求密文,根據歐拉定理((E * D)mod 乘積值 = 1),即就是求模反元素

         5、產生公鑰(E,N),私鑰(D,N)

         6、根據加密公式對字符串、文件內容加密(採用快速冪取模運算

         7、根據解密公式對字符串、文件內容解密(採用快速冪取模運算

    二、大數類型的RSA(考慮信息傳遞的安全性,使用boost庫中的大數)

         1、使用boost庫的random產生隨機數,使用miller_ranbin算法進行素數判斷

         2、求密文,對於大數使用暴力遍歷的方式時間複雜很高,因此需要更快的算法,採用歐幾里得算法--輾轉相除法求密文

四、源碼

    一、普通類型

           https://github.com/ssh1222/Cplusplus/tree/master/RSA

    二、大數

           https://github.com/ssh1222/Cplusplus/tree/master/BagRSA

五、結果

     1、字符串

           

           

           

      2、文件  

           

六、實現RSA使用到的其他算法和定理

       1、同餘定理

          

        2、模冪運算

            

       3、歐幾里得定理

           

       4、歐幾里得算法---輾轉相除法

              

       5、擴展的歐幾里得算法

            

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章