1.加密演算法概述
加密演算法根據內容是否可以還原分為可逆加密和非可逆加密。
可逆加密根據其加密解密是否使用的同乙個金鑰而可以分為對稱加密和非對稱加密。
所謂對稱加密即是指在加密和解密時使用的是同乙個金鑰:舉個簡單的例子,對乙個字串c做簡單的加密處理,對於每個字元都和a做異或,形成密文s。解密的時候再用密文s和金鑰a做異或,還原為原來的字串c。這種加密方式有乙個很大的缺點就是不安全,因為一旦加密用的金鑰洩露了之後,就可以用這個金鑰破解其他所有的密文。
非對稱加密在加密和解密過程中使用不同的金鑰,即公鑰和私鑰。公鑰用於加密,所有人都可見,私鑰用於解密,只有解密者持有。就算在一次加密過程中原文和密文發生洩漏,破解者在知道原文、密文和公鑰的情況下無法推理出私鑰,很大程度上保證了資料的安全性。
此處,我們介紹一種非常具有代表性的非對稱加密演算法,rsa加密演算法。rsa演算法是2023年發明的,全稱是rsa public key system,這個public key就是指的公共金鑰。
2.金鑰的計算獲取過程
金鑰的計算過程為:首先選擇兩個質數p和q,令n=p*q。
令k=ϕ(n)=(p−1)(q−1),原理見4的分析
選擇任意整數d,保證其與k互質
取整數e,使得[de]k=[1]k。也就是說de=kt+1,t為某一整數。
3.rsa加密演算法的使用過程
同樣以乙個字串來進行舉例,例如要對字串the art of programming進行加密,rsa演算法會提供兩個公鑰e和n,其值為兩個正整數,解密方持有乙個私鑰d,然後開始加密解密過程過程。
1. 首先根據一定的規整將字串轉換為正整數z,例如對應為0到36,轉化後形成了乙個整數序列。
2. 對於每個字元對應的正整數對映值z,計算其加密值m=(n^e)%n. 其中n^e表示n的e次方。
3. 解密方收到密文後開始解密,計算解密後的值為(m^d)%n,可在此得到正整數z。
4. 根據開始設定的公共轉化規則,即可將z轉化為對應的字元,獲得明文。
4.rsa加密演算法原理解析
下面分析其內在的數學原理,說到rsa加密演算法就不得不說到尤拉定理。
尤拉定理(euler』s theorem)是尤拉在證明費馬小定理的過程中,發現的乙個適用性更廣的定理。尤拉定理敘述如下:首先定義乙個函式,叫做尤拉phi函式,即ϕ(n),其中,n是乙個正整數。
ϕ(n)=總數(從1到n−1,與n互質整數)
比如5,那麼1,2,3,4,都與5互質。與5互質的數有4個。ϕ(5)=4
再比如6,與1,5互質,與2,3,4並不互質。因此,ϕ(6)=2
對於乙個質數p來說,它和1, 2, 3, …, p – 1都互質,所以ϕ(p)=p−1。比如ϕ(7)=6,ϕ(11)=10
尤拉定理:如果n是乙個正整數,a是任意乙個非0整數,且n和a互質。那麼,a^ϕ(n)−1可以被n整除。
推論1:如果m和n是互質的正整數。那麼,ϕ(mn)=ϕ(m)ϕ(n)
推論2:[ab]n=[[a]n[b]n]n
證明:假設a和b除以n的餘數為c1,c2。a和b可以寫成a=nt1+c1,b=nt2+c2。那麼,ab=n2t1t2+nt1c2+nt2c1+c1c2。因此ab除以n的餘數為c1c2。即[ab]n=[a]n[b]n。
有以上定理後,由此可以推導出rsa演算法的內在原理。
根據尤拉定理,對於任意z,如果z與n互質,那麼:
[z^ϕ(n)]n=[z^k]n=[1]n
因此,[z^(de)]n=[z^(kt+1)]n=[z^(kt)*z]n=[z^kt]n*[z]n= [z]n 因為[z^k]n = [1]n
上面主要使用了de=kt+1以及推論2。也就是說:
[z^(de)]n=[z]n
根據2的推論,有
([z^e]n)^d=[z]n
即d個餘數相乘,因為其乘積可能大於n,所以由[ab]n=[[a]n[b]n]n,例如令a和b都為5,n為3,可知該結論
故上式可描述為[([z^e]n)^d]n=[z]n=z,就是原數字乘方求餘數,然後再乘方求餘數後得到原來數字的過程,得證。
公開的加密方式,私有的解密方式。rsa安全的關鍵在於很難對乙個大的整數進行因子分解。
5.rsa加密的缺點
1)產生金鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。
2)安全性,rsa的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯rsa的難度與大數分解難度等價,而且密碼學界多數人士傾向於因子分解不是np問題。
3)速度太慢,由於rsa 的分組長度太大,為保證安全性,n 至少也要 600 bitx以上,使運算代價很高,尤其是速度較慢,較對稱密碼演算法慢幾個數量級;且隨著大數分解技術的發展,這個長度還在增加,不利於資料格式的標準化。
RSA加密演算法加密與解密過程解析
1.加密演算法概述 加密演算法根據內容是否可以還原分為 可逆加密和非可逆加密 可逆加密根據其加密解密是否使用的同乙個金鑰而可以分為 對稱加密和非對稱加密 所謂對稱加密即是指在加密和解密時使用的是同乙個金鑰 舉個簡單的例子,對乙個字串c做簡單的加密處理,對於每個字元都和a做異或,形成密文s。解密的時候...
RSA加密演算法
素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。例如,15 3 5,所以15不是素數 又如,12 6 2 4 3,所以12也不是素數。另一方面,13除了等於13 1以外,不能表示為其它任何兩個整數的乘積,所以13是乙個素數。素數也稱為 質數 二 什麼是 互質數...
RSA加密演算法
演算法的描述 1.選取兩個素數p,q 2.計算n p q,fn p 1 q 1 3.選擇乙個整數e,使得e與fn的最大公約數為1,e將會用於對資料進行加密。4.計算出乙個整數d,使得d e除fn的餘數為1。d用於對密文進行解密,還原出明文。5.假設明文為m,密文為c。如果需要對原文進行加密,則進行如...