Tan's Blog.

Crypto:What's RSA

字数统计: 736阅读时长: 2 min
2019/04/11 Share

What’s RSA

使用工具

OpenSSL

解题思路

题目给出两个文件,一个是待解的密文,另一个是解密用到的私钥,也就是解密规则。那我借助了一个开放源代码的软件库包OpenSSL,它囊括了主要的密码算法,本题用到RSA算法,直接输入命令行就可以解密。

利用rsautl命令进行私钥解密。
-decrypt:用RSA的私有密钥对输入的数据进行解密。
-in filename:需要处理的文件,默认为标准输入。
-inkey file:指定我们的私有密钥文件,格式必须是RSA私有密钥文件。
-out filename:指定输出文件名,默认为标准输出。
读取写出的文件,GET!

总结

科普RSA的来源,是三位科学家的名字Rivest Shamir Adleman的简写。

要理解整个RSA的流程,需要一些数学理论基础,比如:

互质关系:两个正整数,除1以外,再没有别的公因子。
欧拉函数:任意给定正整数n,在小于等于n的正整数之中,有多少个与n构成互质关系。而计算这个的函数就是欧拉函数,经过一系列推导可导出欧拉定理

还有一种是欧拉定理的特殊情况—费马小定理

模反元素:如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除。

理解这些数学理论后,尝试理解RSA的实现原理

第一步,选择两个不等质数p,q

这里我们选择 61 和53。

第二步,计算乘积n

n = p*q = 3233

第三步,计算n的欧拉函数φ(n)

φ(n) = φ(p)*φ(q)= (p-1)(q-1) = 3120 。一个质数p的欧拉函数等于p-1,用到费马小定理。

第四步,随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。

取e = 17

第五步,计算e对于φ(n)的模反元素d。

ed -1 = kφ(n),得d = 2753

第六步,将n和e封装成公钥,n和d封装成私钥。

n = 3233,e = 17, d=2753。公钥为(3233,17),私钥为(3233,2723)

第七步,分析,私钥的获取

由六可以看出来,公钥和私钥的区别其实只是d,也就是说d的推导可以在已知n,e的情况下推导出来。

第八步,私钥(n,d)解密

(n,d) = (3233,2723) 。在拿到c = 2790之后,进行以下操作:
c^d ≡ m (mod n) 即可得到m 。
推导,m = (2790^2723) %3233 ,使用快速幂取模,可以轻松得到答案,m = 65,转换为Ascii码为a
这里RSA算法需要用到许多数学知识,做各种运算,同时我们也可以看出RSA算法下公钥和私钥在已知一些信息是可以相互推导的,通过私钥可以轻松计算出公钥,反之不行。

CATALOG
  1. 1. What’s RSA
    1. 1.1. 使用工具
    2. 1.2. 解题思路
    3. 1.3. 总结
      1. 1.3.1. 要理解整个RSA的流程,需要一些数学理论基础,比如:
      2. 1.3.2. 理解这些数学理论后,尝试理解RSA的实现原理
        1. 1.3.2.1. 第一步,选择两个不等质数p,q
        2. 1.3.2.2. 第二步,计算乘积n
        3. 1.3.2.3. 第三步,计算n的欧拉函数φ(n)
        4. 1.3.2.4. 第四步,随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。
        5. 1.3.2.5. 第五步,计算e对于φ(n)的模反元素d。
        6. 1.3.2.6. 第六步,将n和e封装成公钥,n和d封装成私钥。
        7. 1.3.2.7. 第七步,分析,私钥的获取
        8. 1.3.2.8. 第八步,私钥(n,d)解密