RSA2
知识准备:
Openssl
我们在平时的Linux运维管理的时候,经常会进行各种数据备份任务。将数据导出然后打包。通常在安全性要求比较高的环境下,我们可以借助 OpenSSL 工具对打包后的数据进行加密,这样能进一步的保障数据的安全性。
常用openssl 语句:
从公钥中读取e和n:openssl rsa -pubin -text -modulus -in warmup -in 【public.pem】
Rsatool.py生成指定的私钥:python rsatool.py -o 【private.pem】 -e 【65537】 -p 【123】-q 【123】
用私钥解密:openssl rsautl -decrypt -in 【flag.enc】 -inkey 【private.pem】
Openssl加密指令语法:
openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e]
[-d] [-a] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-p]
[-P] [-bufsize number] [-nopad] [-debug]
说明:
-chipername选项:加密算法,Openssl支持的算法在上面已经列出了,你只需选择其中一种算法即可实现文件加密功能。
-in选项:输入文件,对于加密来说,输入的应该是明文文件;对于解密来说,输入的应该是加密的文件。该选项后面直接跟文件名。
-out选项:输出文件,对于加密来说,输出的应该是加密后的文件名;对于解密来说,输出的应该是明文文件名。
-pass选项:选择输入口令的方式,输入源可以是标准输入设备,命令行输入,文件、变量等。
-e选项:实现加密功能(不使用-d选项的话默认是加密选项)。
-d选项:实现解密功能。
-a和-A选项:对文件进行BASE64编解码操作。
-K选项:手动输入加密密钥(不使用该选项,Openssl会使用口令自动提取加密密钥)。
-IV选项:输入初始变量(不使用该选项,Openssl会使用口令自动提取初始变量)。
-salt选项:是否使用盐值,默认是使用的。
-p选项:打印出加密算法使用的加密密钥。
解题
1.下载题目给的两个文件,一个公钥和一个加密文件。
但此题和前一个题不同,之前的题目给了私钥,可以直接解出来。这个题目只给了公钥,并没有做分解,我们可以对题目所给的公钥进行分解,自己找出私钥对文件进行解密。
2.遇到下面这种格式的,就会选择用openssl
3.将题目中下载的两个文件共享到虚拟机中
4.从公钥中读取e和n:
openssl rsa -pubin -text -modulus -in warmup -in pubkey.pem
e=65537
n=0xC2636AE5C3D8E43FFB97AB09028F1AAC6C0BF6CD3D70EBCA281BFFE97FBE30DD
5.下载yafu,factor()分解n:
q=275127860351348928173285174381581152299 p=319576316814478949870590164193048041239
6.Rsatool.py生成指定的私钥:
python rsatool.py -o private.pem -e 65537 -p 319576316814478949870590164193048041239 -q 275127860351348928173285174381581152299
生成私钥这里老出问题,还没解决..
参考资料
https://www.freebuf.com/column/148185.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
https://blog.csdn.net/u011377996/article/details/79368067