RSA 每次公鑰加密不同結果


    今天服務器端一哥們突然跑過來跟我說:我發現公鑰每次加密都不同結果啊?

    我說:怎么可能?不同的話,私要怎么解密和驗證啊?

    然后我屁顛屁顛的試了下,結果發現不論在在線RSA的還是自己公司 利用同一個明文加密,都會生成不同的秘文。   然后解密確是都能解出來。。。。

  這個時候我就有點費解了 在自己的理解里面一般RSA不是:滿足如下條件嗎?

  1)、密文 = 明文^e mod n
  2)、明文 = 密文^d mod n
  3)、那么 publickKey = (e,n),privateKey = (d,n)

    難道我真的記錯了?

   其實后來在網上查找了下 ,才發現其實這個算法是沒錯,只是我們的RSA在加密同一個數據過程中,加入了隨機數處理(即加鹽-salt),這樣就導致每次需要加密的明文都是不同的,那么顯然密文就每次都不同了。  那么解密后怎么會是同一個呢? 答案很簡單,那就是 客戶端和服務器端同樣解隨機數。 具體如下方案:

 1)、 密文 =( random+明文) ^e mod n  //publicKey  加密
 2)、(random+明文) = 密文^d mod n // 服務器端利用privateKey 解密
3)、 明文 = (random+明文) - random //服務器端解碼出random 4)、 明文和數據庫中數據比較

 

 

感覺這哥們的解釋:http://blog.csdn.net/guyongqiangx/article/details/74930951


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM