RSA算法是一種非對稱加密算法,由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)於1977年提出,並以他們三人的姓氏首字母縮寫命名。RSA算法的安全性基於兩個素數相乘的數學原理,其核心步驟包括密鑰生成、加密和解密。
密鑰生成:
選擇兩個大的素數p和q,並計算它們的乘積n=p×q。
計算t=(p-1)(q-1),選擇一個質數e,使得e與t互質(即e與t沒有公因數除了1),e通常小於t且大於1。
計算e關於t的模逆元d,即滿足(dex)%t=1的整數d。
加密過程:
將待加密的明文信息轉化為一個整數m,m必須小於n。
使用公鑰(n,e)對m進行加密,計算密文c=m^e mod n。
解密過程:
使用私鑰(n,d)對密文c進行解密,計算明文m=c^d mod n。
RSA算法的安全性依賴於大數分解問題的困難性,即在沒有密鑰的情況下,從n很難推導出p和q。因此,密鑰的長度足夠長時(例如1024位或2048位),RSA被認為是安全的。RSA算法廣泛套用於數據加密、數字簽名等領域,是現代密碼學的基礎之一。