openssl工具使用

7 篇文章 0 订阅
4 篇文章 2 订阅

openssl工具使用

1.获取随机数(rand)

# 获取帮助
$ openssl rand -h

# 获取16字节数据, 并且以16进制输出到屏幕
$ openssl rand -hex 16

# 获取16字节数据, 并且以16进制输出到infile.txt文件
$ openssl rand -out infile.txt -hex 16

# 获取16字节数据, 并且以base64输出到屏幕
$ openssl rand -base64 16

2.摘要digest(dgst)、hash

# 获取帮助
$ openssl dgst -h

# 用sha1算法对infile.txt做摘要
$ openssl dgst -sha1 infile.txt 

# 用sha256算法对infile.txt做摘要
$ openssl dgst -sha256 infile.txt 

# 用sha256算法对infile.txt做摘要, 结果输出到dgst_sha256文件
$ openssl dgst -sha256 -out dgst_sha256 infile.txt 

# 用带hmac key的sha256算法对infile.txt做摘要, 结果输出到dgst_sha256文件,key为12345678
$ openssl dgst -sha256 -out dgst_sha256_hmac -hmac 12345678 infile.txt 

3.对称算法加密解密(enc/dec)

# 获取帮助
$ openssl enc -h

# 原始文件(待加密的文件)infile.txt:
$ cat infile.txt 
c3faf198553d22638cf24182577c3a56

# 用aes-128-ecb -e加密, -K接密钥, -p打印key和iv(若-P直接打印key和iv, 生成的-out文件为空)
# 需要加密的文件为infile.txt, 加密后的文件为outfile.txt
# 密钥:11223344112233441122334411223344
$ openssl aes-128-ecb -e -K 11223344112233441122334411223344 -in infile.txt -out outfile.txt -p
# 用aes-128-ecb -d解密, -K接密钥, -p打印key和iv(若-P直接打印key和iv, 生成的-out文件为空)
# 密钥为11223344112233441122334411223344, decfile.txt解密后的文件
$ openssl aes-128-ecb -d -K 11223344112233441122334411223344 -in outfile.txt -out decfile.txt -p

# 用aes-128-cbc -e加密, -K接密钥 -iv接iv值
# 密钥为11223344112233441122334411223344
# iv值为55667788556677885566778855667788
$ openssl aes-128-cbc -e -K 11223344112233441122334411223344 -iv 55667788556677885566778855667788 -in infile.txt -out outfile.txt -p
# 用aes-128-cbc -d解密, -K接密钥 -iv接iv值
$ openssl aes-128-cbc -d -K 11223344112233441122334411223344 -iv 55667788556677885566778855667788 -in outfile.txt -out dec_cbc_file.txt -p

# 用aes-128-cbc -e加密, -pass pass:123456
$ openssl aes-128-cbc -e -in infile.txt -out outfile.txt -pass pass:123456 -p
# 用aes-128-cbc -d解密, -pass pass:123456
$ openssl aes-128-cbc -d -in outfile.txt -out dec_cbc_file.txt -pass pass:123456 -p

# 新建文件pwfile,内容为123456
# 用aes-128-cbc -e加密, -pass file:pwfile
$ openssl aes-128-cbc -e -in infile.txt -out outfile.txt -pass file:pwfile -p
# 用aes-128-cbc -d解密, -pass file:pwfile
$ openssl aes-128-cbc -d -in outfile.txt -out dec_cbc_file.txt -pass file:pwfile -p

4. 非对称算法

4.1 公私钥对的生成

rsa算法私钥生成
# 获取帮助
$ openssl genrsa -h

# 产生rsa私钥, 打印的屏幕, 默认输出私钥长度为2048bits
$ openssl genrsa

# 产生rsa私钥, 打印的屏幕, 指定私钥长度为2048bits
$ openssl genrsa 2048

# 产生rsa私钥, 输出到private_key文件, 默认输出私钥长度为2048bits
$ openssl genrsa -out private_key
# Generating RSA private key, 2048 bit long modulus

# 产生rsa私钥, 输出到private_key文件, 默认输出私钥长度为2048bits, 用des加密, 接下来需要输入des密钥
# des算法使用56bit密钥, des3算法使用168bit密钥
$ openssl genrsa -out private_key -des

产生rsa私钥, 输出到private_key文件, 指定输出私钥长度为4096bits, 用des加密, 接下来需要输入des密钥
$ openssl genrsa -out private_key -des 4096

rsa算法公钥生成
# 获取帮助
$ openssl rsa -h

# 用rsa私钥文件private_key.txt生成公钥文件public_key.txt
# -pubout 指定输出文件是公钥
$ openssl rsa -in private_key.txt -pubout -out public_key.txt

4.2 rsa加解密

注意:无论是使用公钥加密还是私钥加密,RSA每次能够加密的数据长度不能超过RSA密钥长度,并且根据具体的补齐方式不同输入的加密数据最大长度也不一样,而输出长度则总是跟RSA密钥长度相等。RSA不同的补齐方法对应的输入输入长度如下表

# 获取帮助
$ openssl rsautl -h

# 方法一:
# 使用私钥文件进行加密-inkey private_key, 加密结果输出到-out rsa_enc_out.txt
$ openssl rsautl -encrypt -in infile.txt -inkey private_key -out rsa_enc_out.txt
$ cat rsa_enc_out.txt 
屏幕显示 乱码

# 使用私钥文件进行解密-inkey private_key, 解密结果输出到-out rsa_infile.txt
$ openssl rsautl -decrypt -in rsa_enc_out.txt -inkey private_key -out rsa_infile.txt

# 方法二:
# 生成RSA密钥
$ openssl genrsa -des3 -passout pass:123456 -out RSA.pem

# 提取公钥
$ openssl rsa -in RSA.pem -passin pass:123456 -pubout -out pub.pem

# 使用RSA作为密钥进行加密,实际上使用其中的公钥进行加密
$ openssl rsautl -encrypt -in plain.txt -inkey RSA.pem -passin pass:123456 -out enc.txt
$ cat enc.txt 
屏幕显示 乱码

# 使用RSA作为密钥进行解密,实际上使用其中的私钥进行解密
$ openssl rsautl -decrypt -in enc.txt -inkey RSA.pem -passin pass:123456 -out replain.txt
$ cat replain.txt 
屏幕显示 c3faf198553d22638cf24182577c3a56

参考:

https://www.jianshu.com/p/15b1d935a44b
openssl 对称加密算法enc命令详解 - Gordon0918 - 博客园

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ha-Ha-Interesting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值