linux+openssl命令之RSA加解密操作


🌈write in front🌈
🧸大家好,我是N阶二进制.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.
🆔本文由N阶二进制原创 CSDN首发🐒 如需转载还请通知⚠️
📝个人主页:N阶二进制🧸—CSDN博客
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏:N阶二进制🧸的openssl学习系列专栏——CSDN博客


一、RSA介绍

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出。RSA是目前最广泛使用的公钥加密算法之一。它基于两个大素数的乘积的难解性问题,其中一个素数用作加密密钥,另一个素数用作解密密钥。

1.1 RSA的基本原理

  1. 密钥生成:

    • 选择两个大素数(通常是几百位或几千位的素数),记作pq
    • 计算n = p * qn为RSA的模数。
    • 选择一个与(p-1) * (q-1)互质的整数e,1 < e < (p-1) * (q-1)e称为公钥指数。
    • 计算d,使得d * e ≡ 1 (mod ((p-1) * (q-1)))d称为私钥指数。

    其中,n是公钥和私钥的一部分,e是公钥的一部分,d是私钥的一部分。

  2. 加密过程:

    • 将明文消息转换为整数m,0 <= m < n
    • 使用公钥(n, e),计算密文c ≡ m^e (mod n)
  3. 解密过程:

    • 使用私钥(n, d),计算密文c的原始消息m ≡ c^d (mod n)

1.2 RSA的应用和特点

  • 安全性: RSA的安全性基于大整数分解的难度,即将一个大合数分解为其素数因子。目前,除非使用量子计算等尚未实现的技术,否则在合适选择的密钥长度下,破解RSA加密是非常困难的。

  • 数字签名: RSA不仅可以用于加密,还可以用于数字签名。发送者可以使用私钥对消息进行签名,接收者可以使用发送者的公钥验证签名的有效性。

  • 密钥交换: RSA算法也可以用于密钥交换,两方可以使用对方的公钥加密一个对称密钥,然后用自己的私钥解密,从而完成密钥交换。

  • 公开密钥和私有密钥: RSA算法使用不同的密钥进行加密和解密,因此称为非对称加密。公钥可以公开,用于加密消息,而私钥则必须保持机密,用于解密消息。

RSA算法在信息安全领域广泛应用,包括加密通信、数字签名、身份认证等。然而,需要注意的是,选择合适的密钥长度非常重要,因为随着计算能力的提高,较短的密钥长度可能会变得不够安全。

二、openssl rsa命令参数说明

参数说明
生成RSA密钥对
-out file输出私钥或公钥文件。
-pubout输出公钥。
-aes256, -des3使用AES-256或3DES加密私钥。
生成RSA私钥
-in file输入用于生成私钥的文件。
-passin arg输入私钥密码的来源。
生成RSA公钥
-pubin输入的密钥文件为公钥。
查看RSA密钥信息
-text以文本形式显示密钥的信息。
-noout不输出密钥。
加密和解密
-in file输入文件(用于加密或解密)。
-out file输出文件(加密或解密后的结果)。
-passin arg输入密码的来源。
-passout arg输出密码的来源。
数字签名和验证
-sign使用私钥对数据进行数字签名。
-verify使用公钥验证数字签名。
PKCS#8格式
-pkcs8使用PKCS#8格式。
-topk8使用PKCS#8格式,并指定加密算法(aes-128-cbc或aes-256-cbc)。
-nocrypt使用PKCS#8格式,不加密私钥。
PEM格式
`-inform PEMDER`
`-outform PEMDER`
PEM编码的数据
-pubin输入的密钥文件为PEM编码的公钥。
-pubout输出公钥为PEM格式。
PKCS#1格式
-RSAPublicKey_out输出PKCS#1格式的公钥。
PKCS#1私钥格式
-RSAPublicKey_in输入PKCS#1格式的公钥。
PKCS#8私钥格式
-RSAPrivateKey_out输出PKCS#8格式的私钥。
PEM和DER格式转换
`-inform PEMDER`
`-outform PEMDER`
其他
-check检查密钥文件的一致性。
-text显示密钥信息。
-fingerprint输出公钥的指纹。
-rand file(s)指定用于生成随机数的文件。

请根据需要在命令行中选择合适的参数。

三、openssl rsa命令操作

3.1 生成rsa公私钥

生成RSA密钥对的openssl命令如下:

openssl genpkey -algorithm RSA -out private_key.pem

这个命令会生成一个默认长度的RSA私钥,并将私钥保存到名为private_key.pem的文件中。如果你想要生成特定长度的密钥,可以使用-pkeyopt rsa_keygen_bits:长度参数,例如,要生成2048位的RSA密钥,命令如下:

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private_key.pem

如果你还想生成对应的公钥,可以使用以下命令:

openssl rsa -pubout -in private_key.pem -out public_key.pem

这个命令将从私钥文件private_key.pem中提取公钥,并将公钥保存到名为public_key.pem的文件中。

3.2 rsa加密

使用公钥对数据进行加密。例如,将要加密的数据保存在plaintext.txt文件中,加密后的数据将保存在encrypted.txt文件中:

openssl rsautl -encrypt -inkey public_key.pem -pubin -in plaintext.txt -out encrypted.txt

这个命令使用公钥文件public_key.pem对plaintext.txt中的数据进行加密,加密结果保存在encrypted.txt文件中。

3.3 rsa解密

使用私钥对加密后的数据进行解密。解密后的数据将保存在decrypted.txt文件中:

openssl rsautl -decrypt -inkey private_key.pem -in encrypted.txt -out decrypted.txt

openssl rsautl -decrypt -inkey private_key.pem -in encrypted.txt -out decrypted.txt

3.4 rsa签名

3.5 rsa校验

3.6 rsa秘钥模数

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,使用公钥和私钥进行加密和解密。在RSA算法中,**密钥模数(modulus)**是非常重要的概念。密钥模数是RSA算法中公钥和私钥的一部分,它用于控制加密和解密操作的范围。

在RSA算法中,一个密钥对由一个公钥和一个私钥组成。密钥模数(通常表示为n)是一个大的整数,它是两个大质数(通常表示为pq)的乘积。这意味着 n = p * q,其中pq是两个不相等的大质数。

密钥模数决定了RSA加密和解密操作中的数值范围。具体地说:

  1. 公钥包含了密钥模数n和一个指数e。消息在加密之前会被转换成整数,这个整数必须小于n。加密操作使用公钥中的指数e和密钥模数n来进行。

  2. 私钥包含了密钥模数n和一个私有指数d。解密操作使用私钥中的指数d和密钥模数n来进行。

密钥模数的长度通常决定了RSA密钥的强度。较长的密钥模数意味着更大的数值范围,从而增加了RSA加密的安全性,但也会增加计算的复杂性。一般来说,RSA密钥模数的长度越长,加密的安全性就越高,但加密和解密的速度也会变慢。

例如,一个RSA密钥可能具有以下参数:

  • n(密钥模数):16777259
  • p(第一个大质数):4093
  • q(第二个大质数):4099

在这种情况下,n = 4093 * 4099 = 16777259。密钥模数16777259决定了RSA加密和解密操作中的数值范围。

3.7 转换为DER编码

openssl rsa -in key.pem -outform der -out key.der

3.8 将明文私钥文件转换为密码保护


openssl rsa -inform der -in key.der -des3 -out enckey.pem

3.9 打印公钥信息


openssl rsa -pubin -in pubkey.pem -text -modulus

3.10 显示私钥信息,保护密钥写在pwd.txt中

openssl rsa -in enckey.pem -passin file:pwd.txt
  • 43
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N阶二进制

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值