密码学基础
密码技术用于保证电子数据的安全性,完整性和真实性。
- 保密性:对数据进行加密,使得非法用户无法读懂数据信息,而合法用户可以用密钥读取信息;
- 完整性:对数据进行鉴别,已确认是否被非法篡改;
-
真实性:保证数据来源的真实性。
加密算法描述
加密算法分成两种,对称加密和非对称加密。
- 对称加密:双份都使用共同密钥,不论发送方对信息加密还是接收方对信息解密,都是使用同一个密钥;
a. 如果这个密钥被非法获取,则加密毫无意义;
b. 另外,如何传送密钥也是一个难题。 - 非对称加密 (RSA): 两把密钥:公开密钥,保密私钥。
a. 两个成对出现。如果通过公钥加密,则只能通过私钥解密;Vice Versa;
RSA 算法的原理及应用
RSA 的原理
- 密钥的产生:
- 随机选取两个长度相等的大素数: & ;
- 令
- 随机在 中取一个数 , 并且 ,继而我们可以得到 (我们通过拓展欧几里得算法找 )
- 公钥: 密钥:
- 加密算法过程:
- 已知明文 ,我们可以将 分成不同符块 , 使得每个符块 。 然后得到密文:
- 解密算法实现:
- 已知密文 以及私钥 ,可以计算出明文
- 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)