平時在工作中一直有使用到對稱加密與非對稱加密算法,以前一直是拿來就用,沒有仔細想過裏面的實現原理。今天突然有興趣和時間研究下。
1、什麼是對稱加密算法?
加密和解密都使用相同密鑰的算法。
公式:C=E(P,e) , P=D(C,d) ,其中C是密文,P是明文,如果e=d,則函數P與函數D是對稱函數,也即是對稱算法。
2、什麼是非對稱加密算法?
加密和解密使用不同密鑰的算法。
公式:C=E(P,e) , P=D(C,d) ,其中C是密文,P是明文,如果e!=d,則函數P與函數D是非對稱函數,也即是非對稱算法。
以前在剛開始面試的時候,經常死記着使用同一個密鑰加密解密的就是對稱加密算法,使用不同密鑰加密解密的就是非對稱加密算法,然後對稱加密算法有DES、3DES等,非對稱加密算法有RSA等,只是死記這些膚淺的知識,因果關係都弄亂了。
其實主要你理解了算法的原理,根本就不需要死記哪種算法屬於對稱加密算法,哪種算法屬於非對稱加密算法。因爲當你理解了算法的原理,完全可以設計出一種加密算法。
舉個栗子:
1、對稱加密,輸出HELLO WORLD。
下面是一種簡單的3字符循環移位密碼
服務器將明文HELLO WORLD的每個字符往右移3位進行加密後得到的結果是:KHOOR ZRUOG,服務器將這段密文發送給客戶端後,客戶端將密文的每個字符向左移3位即可得到明文:HELLO WORLD。
看公式:C=E(P,e) , P=D(C,d),現在我們可以假設e=3,d=3,則E和D是對稱算法,至於E和D算法如何用代碼實現也很簡單,主要理解這個原理,算法可以千變萬化,如果你害怕別人提供的對稱加密算法不安全,完全可以自己設計一種算法。
2、非對稱加密
數學不好,150分重來沒有滿分過,非對稱加密算法的例子一下子沒想到好的例子。原理上面已經寫的很清楚了,誰能想到一個好的例子,也麻煩給下給我。