1. 程式人生 > >對RSA加密的理解

對RSA加密的理解

背景:最近在看唐巧的書<<IOS進階>>有一段談到RSA加密演算法的

黑客在咖啡館或機場等一些公共場所,用自己的電腦設定一個與該場所名字相同的免費 WiFi,那麼受害者只要不小心使用了該 WiFi,就可能洩漏自己的明文密碼。大多數普通人, 都會使用一樣的密碼登入他的所有的賬號,這就意味著他的其他賬號,例如淘寶或網上銀 行賬號也有被盜的風險。
正確的做法應該是這樣:事先生成一對用於加密的公私鑰,客戶端在登入時,使用公鑰將用 戶的密碼加密後,將密文傳輸到伺服器。伺服器使用私鑰將密碼解密,然後加鹽 (Salt:在密 碼學中,是指通過在密碼任意固定位置插入特定的字串,讓雜湊後的結果和使用原始密 碼的雜湊結果不相符) 之後再多次求 MD5,之後再和伺服器原來儲存的用同樣方法處理過的 密碼匹配,如果一致,則登入成功。這樣,黑客即使截獲了加密後的密文,由於沒有私鑰, 也無法還原出原始的密碼。而伺服器即使被黑客攻陷,黑客除了暴力嘗試,也無法從加鹽和 多次 MD5 後的密碼中還原出原始的密碼。這樣就保證了使用者密碼的安全。

聯想到之前自己接如渠道SDK時也有用到公鑰私鑰的,於是就找了一下相關資料,加深一下理解。

http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

https://www.zhihu.com/question/25912483

https://www.youtube.com/watch?v=wXB-V_Keiu8

借用知友的理解:

A要發訊息給B

B有一個盒子(公鑰)一把鎖(私鑰)

A拿到盒子放訊息進去,上鎖。

快遞給B,只有B能開啟盒子。

即使中途被劫也無法開啟盒子。

實際應用:

RSA和AES結合使用, 用AES金鑰對明文進行加密,但是AES的金鑰容易洩露,所以,用RSA的私鑰對AES的金鑰加密,即對明文進行一次加密,再對金鑰加密.前幾天才上傳一個加密的程式碼 

AES加密參考:

http://blog.csdn.net/yhhwatl/article/details/52523739