rsa算法的基本原理 RSA算法的功能?
RSA算法的功能?RSA算法是一種公鑰加密機制,它使用不同的加密密鑰和解密密鑰。從已知的加密密鑰推導(dǎo)解密密鑰在計算上是不可行的。RSA由Ron Rivest、ADI Shamir和Leonard Ad
RSA算法的功能?
RSA算法是一種公鑰加密機制,它使用不同的加密密鑰和解密密鑰。從已知的加密密鑰推導(dǎo)解密密鑰在計算上是不可行的。
RSA由Ron Rivest、ADI Shamir和Leonard Adleman于1977年提出。他們?nèi)齻€都在麻省理工學(xué)院工作。RSA是他們姓氏首字母的組合。它的原理是:根據(jù)數(shù)論,找到兩個大素數(shù)相對簡單,但對它們的乘積進行因式分解卻極為困難,因此乘積可以作為加密密鑰公開。
RSA算法的具體過程?
RSA算法非常簡單,概括如下:求兩個素數(shù)P和Q,取n=P*Q,取t=(P-1)*(Q-1),取任意數(shù)e,這就要求e<T和e與t互為素數(shù)(即最大公因數(shù)為1),取d*e%t==1,最后得到三個數(shù):n d e,將消息設(shè)為數(shù)字m(m<N),設(shè)C=(m**d)%N,得到加密消息C,設(shè)m=(C**e)%N,再設(shè)m==m,完成對C的解密。注:**表示冪,以上兩個公式中的d和e可以互換。在對稱加密中:兩個數(shù)字組成一個公鑰,可以告訴其他人;兩個數(shù)字組成一個私鑰,由e保管,沒有人知道。發(fā)送給他人的信息是用E加密的,只要別人能用d來解密,就證明信息是你發(fā)送的,這就構(gòu)成了一種簽名機制。當有人給你發(fā)信息時,使用d加密,這樣只有你有e才能解密。RSA的安全性在于,對于大數(shù)n,沒有有效的分解方法,因此當nd已知時不能得到e;同樣地,當ne已知時也不能得到d。RSA算法簡單而優(yōu)雅,但計算速度相對較慢。一般情況下,RSA并不是直接用于加密所有的信息。最常見的情況是隨機生成一個對稱加密密鑰,然后使用對稱加密算法對信息進行加密,然后使用RSA對剛才的加密密鑰進行加密。最后,應(yīng)該注意的是,小于1024位的當前n被證明是不安全的。在自己使用時,不要使用小于1024位的RSA,最好使用2048位。
如何用C語言程序?qū)崿F(xiàn)RSA算法?
加密時,輸入y,然后輸入要加密的文本(大寫字母)
解密時,輸入n,然后輸入整數(shù)n表示密文數(shù),然后n整數(shù)表示加密時獲得的密文數(shù)。
/*RSA算法*/
#include
#include
#include
#defineMM7081
#definek1789
#definePHIM6912
#definePP85
typedefcharstrtype[10000
]intlen longume[10000
]intchange[126
]charantichange[37
]voidinitialize()
{inti
charc
for(i=11,c=“A”c
{change[c]=ige[i]=c
}
}
voidchangetonum(strtypestr)
{intl=strlen(str),i
len=0
me mset(nume,0,sizeof(nume))
for(i=0i