今天,我转战场地,学习了RSA密码体制和Base编码。
RSA密码体制
基本含义(摘自百度百科)
百度百科链接:https://baike.baidu.com/item/RSA%E7%AE%97%E6%B3%95/263310?fromtitle=RSA&fromid=210678&fr=aladdin
RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,由于无法计算出大数n的欧拉函数φ(N),所以不能根据PK计算出SK。
正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。
算法原理
因为有大佬写得是在太好了,我就直接贴上链接了,一共有两篇,第一篇讲用到的数论知识,第二篇讲具体加密过程。
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
整数分解问题(IF问题)
RSA问题的困难性依赖于整数分解问题的困难性。
只有在选择适当参数的条件下,IF问题才是困难的。
OpenSSL已知密文和私钥破解密文
安装OpenSSL,在OpenSSL终端输入指令。flag.encrypt是加密的文件,rsa_private_key.pem是私钥,将解密的密文输出至flag.de文件中。
Base编码
https://blog.youkuaiyun.com/wangjianno2/article/details/52464208
https://blog.youkuaiyun.com/xuebing1995/article/details/78795577(讲的比较清楚)
转换成Base64的最小单位就是三个字节,对一个字符串来说每次都是三个字节三个字节的转换,对应的是Base64的四个字节。这个搞清楚了其实就差不多了。
明日计划
1.整数分解问题
2.已知RSA密文和公钥,破解密文
3.二进制学习