RSA公钥文件解密密文的原理分析
前言
最近在学习 RSA 加解密过程中遇到一个这样的难题:假设已知 publickey 公钥文件和加密后的密文 flag ,如何对其密文进行解密,转换成明文~~
分析
对于 rsa 算法的公钥与私钥的产生,我们可以了解到以下产生原理:
公钥与私钥的产生
消息加密
首先需要将消息 m 以一个双方约定好的格式转化为一个小于 N,且与 N 互质的整数 n。如果消息太长,可以将消息分为几段,这也就是我们所说的块加密,后对于每一部分利用如下公式加密:
消息解密
利用密钥 d 进行解密。
我们可以知道, RSA 公钥主要有两个信息:模数(modulus)和指数(exponent),也就是我们所说的 N 和 e 。只要有了这两个信息,我们便可以生成公钥,然后使用 rsa 库对数据进行加密~
脚本实现如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import rsa
key = rsa.PublicKey(modulus, exponent)
print key
这时候我们有如下的publickey.pem文件:
-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEB