Post on: 2024-9-2Last edited: 2024-9-2Words 00 min

type
status
date
slug
summary
tags
category
icon
password

加密与解密

加密:对于明文m,公钥(e, n)
c = m^e(此处异或为m的e次方) mod n
解密:对于密文c和私钥(d, n)
m = c ^ d(同上) mod n

安全性

RSA的安全性基于大整数分解的难度。即使知道 nnn 和 eee,没有 ppp 和 qqq 的情况下推导出 ddd 是极其困难的。因此,RSA在密钥足够大的情况下是非常安全的。常用的密钥长度为 2048 位或更高。

公钥和密钥的生成

1.选择两个大质数p和q
2.n=p×q
n为模数,决定了RSA密钥的长度
3.ϕ(n)=(p−1)×(q−1)
这里ϕ(n)是欧拉函数,用于生成公钥和私钥 4.选出公钥指数e
选择一个与ϕ(n)互质且通常较小的整数
5.计算私钥指数d
d * e = 1 mod ϕ(n),d是e的模ϕ(n)逆元

逆元计算

rsa加密与解密实现

RSA密钥的常见格式通常是PEM和DER这两种。
PEM格式是基于Base64编码的文本格式,通常包含明确的头部和尾部标签,如 -----BEGIN PUBLIC KEY----- 和 -----END PUBLIC KEY-----,或者 -----BEGIN RSA PRIVATE KEY----- 和 -----END RSA PRIVATE KEY-----
 
 
  • PEM格式易于阅读和复制,因为它是ASCII文本格式。
  • PEM格式通常用于存储和传输证书、私钥、公钥、以及证书签名请求等。
Der格式
  • DER格式是二进制编码格式,没有头部和尾部标签,因此不易直接阅读。
  • DER格式比PEM格式更紧凑,因为它省略了Base64编码的开销。
使用RSA模块生成密钥对并转化为PEM格式
格式转化
 

c++学习

🗒️c++学习

c++学习


c/c++ new和malloc的区别

🗒️c/c++ new和malloc的区别

new和malloc