算法算法与数据结构

RSA 算法实现

2019-06-17  本文已影响0人  Chunkit_Lau

密码学基础

密码技术用于保证电子数据的安全性,完整性和真实性。

  1. 保密性:对数据进行加密,使得非法用户无法读懂数据信息,而合法用户可以用密钥读取信息;
  2. 完整性:对数据进行鉴别,已确认是否被非法篡改;
  3. 真实性:保证数据来源的真实性。


    RSA algorithm process.png

加密算法描述

加密算法分成两种,对称加密和非对称加密。

  1. 对称加密:双份都使用共同密钥,不论发送方对信息加密还是接收方对信息解密,都是使用同一个密钥;
    a. 如果这个密钥被非法获取,则加密毫无意义;
    b. 另外,如何传送密钥也是一个难题。
  2. 非对称加密 (RSA): 两把密钥:公开密钥,保密私钥。
    a. 两个成对出现。如果通过公钥加密,则只能通过私钥解密;Vice Versa;

RSA 算法的原理及应用

RSA 的原理

  1. 密钥的产生:
    • 随机选取两个长度相等的大素数:q & p;
    • n = p \times q\ , \ \ t = (p - 1) \times (q - 1),\ \ where \ \ t = \phi(n)
    • 随机在 (0, t) 中取一个数 e, 并且 d \times e \equiv 1 \ mod \ n,继而我们可以得到 d (我们通过拓展欧几里得算法找 d
    • 公钥:(n, d) 密钥:(q, p, e)
  2. 加密算法过程:
    • 已知明文 x, \ x < n,我们可以将 x 分成不同符块 x_i, 使得每个符块 x_i < n。 然后得到密文:C = \sum_{i = 1}^m x_i ^ e \ (mod \ n)
  3. 解密算法实现:
    • 已知密文 C 以及私钥 (n, e),可以计算出明文 x = C^d (mod \ n)
  4. 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)
上一篇 下一篇

猜你喜欢

热点阅读