openssl 加解密/签名验签

1、生成密钥对


1.1 生成私钥

使用genrsa指令生成私钥,指定模的长度为 2048 bit(256byte)。

openssl genrsa -out privkey.pem 2048
生成私钥
1.2 生成公钥

使用rsa指令生成公钥,关键的选项为-pubout,告诉openssl需要输出的文件为公钥文件。

openssl rsa -in privkey.pem -pubout -out pubkey.pem


2、生成待加密/签名明文


这只是用来测试加解密的明文,你也可以用其它形式的明文替代

echo penghuikang@foxmail.com > info.txt


3、公钥加密/私钥解密


3.1 使用公钥对明文进行加密

使用rsautl指令及-encrypt选项对明文进行加密,-pubin选项告诉openssl通过-inkey选项传入的密钥为公钥,因为如果没有该选项,openssl默认认为-inkey传入的是私钥。

openssl rsautl -encrypt -in info.txt -inkey pubkey.pem -pubin -out info.txt.enc

如果你需要使用一个x509证书中的RSA公钥的进行加密,则使用-certin选项来代替-pubin,以此来告诉openssl通过-inkey选项传入的是一个带RSA公钥的证书,使用证书中的RSA公钥进行加密。

openssl rsautl -encrypt -in info.txt -inkey pubkey.pem -certin -out info.txt.enc
3.2 使用私钥解密

使用rsautl指令及-decrypt选项对明文进行解密,如上所述,此时不需要传入-pubin选项,因为此时-inkey传入的是私钥。

openssl rsautl -decrypt -in info.txt.enc -inkey privkey.pem -out info_decrypt.txt


4、私钥签名/公钥验签


4.1 使用私钥对明文进行签名

使用rsautl指令、-sign选项及-inkey指定的私钥对明文进行签名,得到签名文件info.txt.sign

openssl rsautl -sign -in info.txt -inkey privkey.pem -out info.txt.sign
4.2 使用公钥验签得到明文

使用rsautl指令、-verify选项及-inkey指定的公钥对密文进行验证,并得到明文文件info_verify.txt

openssl rsautl -verify -in info.txt.sign -inkey pubkey.pem -pubin -out info_verify.txt
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容