時間來到了1976年,兩位美國計算機學家威特菲爾德·迪菲(Whitfield Diffie)和馬丁·赫爾曼(Martin Hellman),首次證明可以在不直接傳遞密鑰的情況下,完成解密。這被稱為“Diffie-Hellman密鑰交換算法”。
DH算法的出現(xiàn)有著劃時代的意義:從這一刻起,啟示人們加密和解密可以使用不同的規(guī)則,只要規(guī)則之間存在某種對應關(guān)系即可。
這種新的模式也被稱為“非對稱加密算法”:
(1)乙方生成兩把密鑰,公鑰和私鑰。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。
(2)甲方獲取乙方的公鑰,用它對信息加密。
(3)乙方得到加密后的信息,用私鑰解密。
公鑰加密的信息只有私鑰解得開,只要私鑰不泄漏,通信就是安全的。
就在DH算法發(fā)明后一年,1977年,羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)在麻省理工學院一起提出了RSA算法,RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的。
新誕生的RSA算法特性比DH算法更為強大,因為DH算法僅用于密鑰分配,而RSA算法可以進行信息加密,也可以用于數(shù)字簽名。另外,RSA算法的密鑰越長,破解的難度以指數(shù)倍增長。
因為其強大的性能,可以毫不夸張地說,只要有計算機網(wǎng)絡(luò)的地方,就有RSA算法。
RSA算法是這樣工作的?
第一步,隨機選擇兩個不相等的質(zhì)數(shù)p和q。
第二步,計算p和q的乘積n。n的長度就是密鑰長度,一般以二進制表示,一般長度是2048位。位數(shù)越長,則越難破解。
第三步,計算n的歐拉函數(shù)φ(n)。
第四步,隨機選擇一個整數(shù)e,其中是1< e <φ(n),且e與φ(n)互質(zhì)。
第五步,計算e對于φ(n)的模反元素d。所謂“模反元素”就是指有一個整數(shù)d,可以使得ed被φ(n)除的余數(shù)為1。
第六步,將n和e封裝成公鑰(n,e),n和d封裝成私鑰(n,d)。