openssl工具
openssl:
linux系统自带的加密工具
官网:https://www.openssl.org/
包括三个组件:
- libcrypto:用于实现加密和解密的库
- libssl:用于实现ssl通信协议的安全库
- openssl:多用途命令行工具
Base64 编码:
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法
base64的编码过程如下:
- 将每3个字节放入一个24位的缓冲区中,最后不足3个字节的,缓冲区的剩余部分用0来填补。然后每次取出6位(2的6次方为64,使用64个字符即可表示所有),将高2位用0来填充,组成一个新的字节,计算出这个新字节的十进制值,对应上面的编码表,输出相应的字符。这样不断地进行下去,就可完成对所有数据的编码工作
openssl命令:
两种运行模式:
- 交互模式
- 批处理模式
三种子命令:
- 标准命令
- 消息摘要命令
- 加密命令
openssl命令对称加密:
工具:
openssl enc、gpg
算法:
3des, aes, blowfish, twofish
enc子命令:
帮助:man enc
例:
openssl enc -e -des3 -a -in red -out red.xx
openssl enc -e -des3 -a -in red.xx
openssl命令单向哈希加密:
工具:
openssl dgst、md5sum、sha1sum等
算法:
md5sum, sha1sum, sha224sum,sha256sum…
dgst子命令:
帮助:man dgst
MAC:
Message Authentication Code,单向加密的一种延伸应用,用于实现网络通信中保证所传输数据的完整性机制
HMAC:
hash-based MAC,使用md5或sha1算法
例:
openssl md5 fstab
openssl sha512 fstab
sha256sum red
openssl命令生成用户密码:
#sha512加密,标准输入读取,-salt加盐
echo 123456|openssl passwd -6 -salt qwert134 -stdin
openssl passwd -6 -salt qwert134 123456
useradd -p `echo 123456|openssl passwd -6 -salt Y16DiwuVQtL6XCQK -stdin` hj
openssl命令生成随机数:
随机数生成器:伪随机数字,利用键盘和鼠标,块设备中断生成随机数
随机数生成方法:
- /dev/random:仅从熵池返回随机数;随机数用尽,阻塞
- /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞
例:
openssl rand -base64 9 #可用于随机密码
openssl rand -hex 9
#特别生成办法:用tr随机,取前30再mdk5加密
tr -dc '[:alnum:]' < /dev/urandom|head -c10
tr -dc 'a-zA-Z0-9' < /dev/urandom|head -c10
openssl命令实现 PKI:
公钥加密:
算法:
RSA, ELGamal
工具:
gpg, openssl rsautl(man rsautl)
数字签名:
算法:
RSA, DSA, ELGamal
密钥交换:
算法:
dh
DSA:Digital Signature Algorithm
DSS:Digital Signature Standard
RSA
生成私钥:
openssl genrsa -out 路径 [-des3] [加密位数,默认2048]
例:
openssl genrsa -out a.key 2048
openssl genrsa -out app2.key -des3 2048 #给私钥加密
从私钥提取公钥:
openssl rsa -in a.key -pubout -out a.pub

浙公网安备 33010602011771号