openssl命令行:RSA的用法-- 终极版

28 阅读1分钟

1、生成密钥

openssl genrsa -out test2048_priv.pem 2048

openssl rsa -pubout -in test2048_priv.pem -out test2048_pub.pem

openssl genrsa -out test3072_priv.pem 3072

openssl rsa -pubout -in test3072_priv.pem -out test3072_pub.pem

openssl genrsa -out test4096_priv.pem 4096

openssl rsa -pubout -in test4096_priv.pem -out test4096_pub.pem

2、查看密钥

openssl rsa -in test2048_priv.pem -text -out

openssl rsa -in test3072_priv.pem -text -out

openssl rsa -in test4096_priv.pem -text -out

read-normal-img

3、基于 PKCS1v1.5 Pending的 签名、验签、加密、解密

(1) 签名和验签

  • openssl dgst -sign test2048_priv.pem -sha256 -out sign.txt in.txt

  • openssl dgst -verify test2048_pub.pem -sha256 -signature sign.txt in.txt

read-normal-img

(2)加密和解密

  • openssl rsautl -encrypt -pkcs -in in.txt -out in_cipher.txt -inkey test2048_priv.pem

  • openssl rsautl -decrypt -pkcs -in in_cipher.txt -inkey test2048_priv.pem -out in_e_d.txt

read-normal-img

3、基于 PKCS1v2.1 PSS signature Pending的 签名、验签

(1)

这条与TA中的TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256 算法对应

  • openssl dgst -sha256 -sign test2048_priv.pem -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -out sign2048pss.bin in.txt

  • openssl dgst -verify test2048_pub.pem -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -sha256 -signature sign2048pss.bin in.txt

read-normal-img

(2)

这条也属于RSA PSS算法,但在TA中找不到与之对应的flag

  • openssl dgst -sha256 -sign test2048_priv.pem -sigopt rsa_padding_mode:pss -out sign2048pss.bin in.txt

  • openssl dgst -verify test2048_pub.pem -sigopt rsa_padding_mode:pss -sha256 -signature sign2048pss.bin in.txt

read-normal-img

注解 :

  • -sha256: 指定要使用的哈希算法,此处使用SHA-256。
  • -sign test2048_priv.pem: 指定要用于签名的RSA私钥文件。请将private_key.pem替换为您实际使用的RSA私钥文件的路径。
  • -sigopt rsa_padding_mode:pss: 指定使用PSS填充模式进行签名。
  • -sigopt rsa_pss_saltlen👎 使用MGF1填充并指定rsa_pss_saltlen:-1以使用与哈希输出相同的盐长度。
  • -out sign2048pss.bin: 指定输出签名的文件名。
  • in.txt: 指定要签名的数据文件,您可以将其替换为您要签名的实际数据文件的路径。

4、基于 PKCS1v2.0 OAEP encryption padding的加密、解密

  • openssl rsautl -encrypt -oaep -in in.txt -out cipher2048_oeap.txt -inkey test2048_priv.pem

  • openssl rsautl -decrypt -oaep -in cipher2048_oeap.txt -out in_e_d.txt -inkey test2048_priv.pem

read-normal-img

5、查看一个私钥

openssl rsa -in test_priv.pem -text 添加威♥:sami01_2023,回复ARM中文,领取ARM中文手册