openssl使用相关简介(一)

2018-01-11  本文已影响0人  丧尸百合兽

openssl使用相关简介

简单的加密一个文件

openssl enc -aes-256-cbc -in input.txt -out output.bin -pass pass:111111

解释一下:

加上-d可以解密

openssl enc -aes-256-cbc -d -in out.bin -pass pass:111111

公钥与私钥

非对称算法(例如rsa)都需要一个加密密钥和一个解密密钥,不同的场景下这两个密钥可以分别作为公钥与私钥。

比如说我想每个访问我的人都通过密文来传递信息,则可以使用公钥加密私钥解密(SSH通信)。而我想证明某个东西是我发出来的,则可以通过私钥加密公钥解密(证书)。

下面生成一个简单的rsa密钥对:

openssl genrsa -out key.pem 1024

解释一下

之后提取出公钥(加密密钥):

openssl rsa -in key.pem -pubout -out pub-key.pem

然后试试加密文件:

openssl pkeyutl -encrypt -in a.txt -pubin -inkey pub-key.pem -out b.bin

解释一下:

同样,解密:

openssl pkeyutl -decrypt -in b.bin -inkey key.pem -out c.txt

数字签名

电子签名的作用是

  1. 某人发布过某个消息
  2. 消息的来源是某人
  3. 途中没有丢失或篡改

电子签名的实现一般是由加密密钥做私钥,解密密钥做公钥。

参考步骤:

openssl dgst -sha512 -out hash.txt a.txt

解释一下:

之后使用密钥签名

openssl pkeyutl -sign -in hash.txt -out a.sig -inkey key.pem

验证:

openssl pkeyutl -verify -in hash.txt -sigfile a.sig -inkey pub-key.pem -pubin

不想解释

当然,也可以直接用dgst来加密和验证(推荐)

#签名
openssl dgst -sha512 -sign key.pem -out a.sig a.txt
#验证
openssl dgst -sha512 -verify pub-key.pem -signature a.sig a.txt

解释一下

签名中

参考资料

A 6 Part Introductory OpenSSL Tutorial
openssl documentation

上一篇 下一篇

猜你喜欢

热点阅读