如何验证公钥 c语言,公钥如何验证签名?

这篇博客演示了如何使用OpenSSL进行公钥加密和私钥解密的完整流程。通过创建一对非对称密钥,并利用公钥对消息进行加密,然后用私钥解密,以及反过来使用私钥加密和公钥解密,展示了RSA算法在信息安全中的应用。示例脚本详细展示了每一步操作及其输出,帮助理解加密和解密的过程。
摘要由CSDN通过智能技术生成

正如atn的回答所指出的那样,这些关键是相反的。

公钥加密,私钥解密(加密):

openssl rsautl -encrypt -inkey public.pem -pubin -in message.txt -out message.ssl

openssl rsautl -decrypt -inkey private.pem -in message.ssl -out message.txt

私钥加密,公钥解密(签名):

openssl rsautl -sign -inkey private.pem -in message.txt -out message.ssl

openssl rsautl -inkey public.pem -pubin -in message.ssl -out message.txt

下面是使用openssl测试整个流程的示例脚本。

#!/bin/sh

# Create message to be encrypted

echo "Creating message file"

echo "---------------------"

echo "My secret message" > message.txt

echo "done\n"

# Create asymmetric keypair

echo "Creating asymmetric key pair"

echo "----------------------------"

openssl genrsa -out private.pem 1024

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

echo "done\n"

# Encrypt with public & decrypt with private

echo "Public key encrypts and private key decrypts"

echo "--------------------------------------------"

openssl rsautl -encrypt -inkey public.pem -pubin -in message.txt -out message_enc_pub.ssl

openssl rsautl -decrypt -inkey private.pem -in message_enc_pub.ssl -out message_pub.txt

xxd message_enc_pub.ssl # Print the binary contents of the encrypted message

cat message_pub.txt # Print the decrypted message

echo "done\n"

# Encrypt with private & decrypt with public

echo "Private key encrypts and public key decrypts"

echo "--------------------------------------------"

openssl rsautl -sign -inkey private.pem -in message.txt -out message_enc_priv.ssl

openssl rsautl -inkey public.pem -pubin -in message_enc_priv.ssl -out message_priv.txt

xxd message_enc_priv.ssl

cat message_priv.txt

echo "done\n"

此脚本输出以下内容:

Creating message file

---------------------

done

Creating asymmetric key pair

----------------------------

Generating RSA private key, 1024 bit long modulus

...........++++++

....++++++

e is 65537 (0x10001)

writing RSA key

done

Public key encrypts and private key decrypts

--------------------------------------------

00000000: 31c0 f70d 7ed2 088d 9675 801c fb9b 4f95 1...~....u....O.

00000010: c936 8cd0 0cc4 9159 33c4 9625 d752 5b77 .6.....Y3..%.R[w

00000020: 5bfc 988d 19fe d790 b633 191f 50cf 1bf7 [........3..P...

00000030: 34c0 7788 efa2 4967 848f 99e2 a442 91b9 4.w...Ig.....B..

00000040: 5fc7 6c79 40ea d0bc 6cd4 3c9a 488e 9913 _.ly@...l.<.h...>

00000050: 387f f7d6 b8e6 5eba 0771 371c c4f0 8c7f 8.....^..q7.....

00000060: 8c87 39a9 0c4c 22ab 13ed c117 c718 92e6 ..9..L".........

00000070: 3d5b 8534 7187 cc2d 2f94 0743 1fcb d890 =[.4q..-/..C....

My secret message

done

Private key encrypts and public key decrypts

--------------------------------------------

00000000: 6955 cdd0 66e4 3696 76e1 a328 ac67 4ca3 iU..f.6.v..(.gL.

00000010: d6bb 5896 b6fe 68f1 55f1 437a 831c fee9 ..X...h.U.Cz....

00000020: 133a a7e9 005b 3fc5 88f7 5210 cdbb 2cba .:...[?...R...,.

00000030: 29f1 d52d 3131 a88b 78e5 333e 90cf 3531 )..-11..x.3>..51

00000040: 08c3 3df8 b76e 41f2 a84a c7fb 0c5b c3b2 ..=..nA..J...[..

00000050: 9d3b ed4a b6ad 89bc 9ebc 9154 da48 6f2d .;.J.......T.Ho-

00000060: 5d8e b686 635f b6a4 8774 a621 5558 7172 ]...c_...t.!UXqr

00000070: fbd3 0c35 df0f 6a16 aa84 f5da 5d5e 5336 ...5..j.....]^S6

My secret message

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值