密碼學(xué)基礎(chǔ)
密碼技術(shù)用于保證電子數(shù)據(jù)的安全性涂臣,完整性和真實(shí)性鹦牛。
- 保密性:對(duì)數(shù)據(jù)進(jìn)行加密,使得非法用戶(hù)無(wú)法讀懂?dāng)?shù)據(jù)信息钙皮,而合法用戶(hù)可以用密鑰讀取信息蜂科;
- 完整性:對(duì)數(shù)據(jù)進(jìn)行鑒別顽决,已確認(rèn)是否被非法篡改;
-
真實(shí)性:保證數(shù)據(jù)來(lái)源的真實(shí)性导匣。
加密算法描述
加密算法分成兩種才菠,對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密。
- 對(duì)稱(chēng)加密:雙份都使用共同密鑰贡定,不論發(fā)送方對(duì)信息加密還是接收方對(duì)信息解密赋访,都是使用同一個(gè)密鑰;
a. 如果這個(gè)密鑰被非法獲取缓待,則加密毫無(wú)意義蚓耽;
b. 另外,如何傳送密鑰也是一個(gè)難題旋炒。 - 非對(duì)稱(chēng)加密 (RSA): 兩把密鑰:公開(kāi)密鑰步悠,保密私鑰。
a. 兩個(gè)成對(duì)出現(xiàn)瘫镇。如果通過(guò)公鑰加密鼎兽,則只能通過(guò)私鑰解密;Vice Versa铣除;
RSA 算法的原理及應(yīng)用
RSA 的原理
- 密鑰的產(chǎn)生:
- 隨機(jī)選取兩個(gè)長(zhǎng)度相等的大素?cái)?shù): & ;
- 令
- 隨機(jī)在 中取一個(gè)數(shù) , 并且 谚咬,繼而我們可以得到 (我們通過(guò)拓展歐幾里得算法找 )
- 公鑰: 密鑰:
- 加密算法過(guò)程:
- 已知明文 ,我們可以將 分成不同符塊 尚粘, 使得每個(gè)符塊 择卦。 然后得到密文:
- 解密算法實(shí)現(xiàn):
- 已知密文 以及私鑰 ,可以計(jì)算出明文
- RSA 算法舉例:(MATLAB)
clear; clc;
p = 67; q = 71;
n = p * q;
t = (p - 1) * (q - 1);
e = 101; d = 1601;
message = [228, 184, 173];
encrpyted_message = mod(sym(message) .^ e, n);
decrpyted_message = mod(sym(encrpyted_message) .^ d, n);
fprintf('the original message is: %d\n', message)
fprintf('the encrpyted message is: %d\n', encrpyted_message)
fprintf('the decrpyted message is: %d\n', decrpyted_message)