RSA加密

RSA加密为非对称加密实现

  • 对称加密:加密解密使用同一个算法
  • 非对称加密:加密和解密使用不同算法

rsa加密原理

  • 应用原理:明文(公钥加密) --> 密文 --> 明文(私钥解密)


    rsa工作过程

简单来说描述如下

  1. 服务器生成公钥+私钥,将公钥给到客户端
    2.客服端 【明文--> 公钥加密 -->密文】 ==> 【服务器】
    3.服务器 【密文--> 私钥解密 -->明文】
  • 数学原理
    关于底层的算法实现涉及到一系列的数学转换步骤,这里简单列举

1.欧拉定理:m^Φ(n) % n ≡ 1
2.费小马定理:m^(n-1) % n ≡ 1

  1. 由1、2经过一顿神操作:m^(e*d) % n = m
    该公式就是rsa基础,至于怎么来的感兴趣的可以去看看密码学相关书籍
    将3中的公式分解可得到欧拉加密解密算法
    rsa加密:m^e % n = c, rsa解密:c^d % n = m

所以
1)m^e % n = c 可以看出是公钥算法(用于加密)
2)c^d % n = m 可以看出是秘钥算法(用于解密)
2)中间变量 “c” 可以看出是密文
这个过程就是rsa算法的基础

生成rsa公钥、秘钥、证书等

这里以MacOSX为例,描述rsa算法的使用过程
OpenSSL是操作rsa相关算法的一个应用,在MacOSX环境下可以直接使用

OpenSSL 常用工具,Mac自带OpenSSL,打开终端直接进行rsa相关操作
genrsa:生成并输入rsa私钥
rsautl:使用rsa秘钥进行加密、解密、签名和验证运算等操作
rsa:处理rsa秘钥的格式转换等

  1. 生成rsa秘钥(数字可选:512、1024、2048,越大越难破解,但是过大导致加解密过程很慢,一搬使用1024,以目前计算的硬件性能基本不可能破解)
 openssl genrsa -out private.pem 1024

2.从私钥中提取公钥

 openssl rsa -in private.pem -pubout -out public.pem

3.将私钥转换成明文

 openssl rsa -in private.pem -text -out private.txt

此处可以使用cat查看文本信息:cat private.txt

4.公钥加密数据

1)生成明文文件:
vi message.txt
2)查看文件内容:
cat message.txt
3)公钥加密:
openssl rsautl -encrypt -in message.txt -inkey public.pem -pubin -out enc.txt
4)私钥解密:
openssl rsautl -decrypt -in enc.txt -inkey private.pem -out dec.txt

也可以通过私钥加密、公钥解密

3)私钥加密:
openssl rsautl -sign -in message.txt -inkey private.pem -out enc.txt
4)公钥解密:
openssl rsautl -verify -in enc.txt -inkey public.pem -pubin -out dec.txt

5.生成证书,由于公钥私钥文件在代码中不直接使用,而是使用证书方式

1)生成证书请求文件:
openssl req -new -key private.pem -out rsacert.csr
依次输入:国家名(cn)、省份名、机构名(xx.inc) ..密码,邮箱等
2) 用该请求文件去证书颁发机构(rsa认证机构)请求证书:
openssl x509 -req -days 3650 -in  rsacert.csr -signkey private.pem -out rsacert.crt
该过程其实是一个认证过程,相当于让该机构“盖个章”
  1. 提取证书供代码使用

通常在代码中会使用公钥文件.der 和私钥文件 .p12
可通过以下命令直接导出

提取公钥文件der:
openssl x509 -outform der -in rsacert.crt -out rsacert.der
提取私钥文件p12(可设置密码):
openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容