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 [email protected] > 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

你可能感兴趣的:(openssl 加解密/签名验签)