本文讲述笔者学习 OpenSSL 的笔记
简介
OpenSSL 支持巨多的加密算法,包括密码学中必学的 DES、AES、RSA、MD5、SHA-1、SHA256 等等。通过它可以加深对密码学的理解,尤其是在看其源码后
在计算机网络上,OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连线者的身份。这个包广泛被应用在互联网的网页服务器上。
其主要库是以C语言所写成,实现了基本的加密功能,实现了SSL与TLS协议。OpenSSL可以运行在OpenVMS、 Microsoft Windows以及绝大多数类Unix操作系统上(包括Solaris,Linux,Mac OS X与各种版本的开放源代码BSD操作系统)。它也提供了一个移植版本,可以在IBM i(OS/400)上运作。
虽然此软件是开放源代码的,但其许可书条款与GPL有冲突之处,故GPL软件使用OpenSSL时(如Wget)必须对OpenSSL给予例外。
OpenSSL 出现得早,故而应用广泛,与之类似的还有 OpenPGP。OpenPGP 的接口更友好,更安全,但是支持的加密算法数量不如 OpenSSL
原理
TODO
用法
对称加密
获取帮助
官方文档:Enc - OpenSSLWiki
1
openssl enc -h
AES
1
2
3
4
5
6
7
8
# 不加盐、不对结果 BASE64 编码
openssl enc -aes-256-cfb -e -nosalt -in plain.txt -out cipher.txt
openssl enc -aes-256-cfb -d -nosalt -in cipher.txt -out plain.txt
# 加盐、对结果 BASE64 编码
openssl aes-256-cbc -a -salt -in secrets.txt -out secrets.txt.enc
openssl aes-256-cbc -d -a -in secrets.txt.enc -out secrets.txt.new
然而当我使用如下命令试图解密 SS 传输的数据时(使用的加密方式为aes-128-gcm
):
1
2
root@master:_posts# openssl enc -aes-128-gcm -d -nosalt -in b
AEAD ciphers not supported by the enc utility
才发现 OpenSSL 不支持支持 AEAD 的加密算法 1
OpenSSL vs GPG
OpenSSL vs GPG for encrypting off-site backups?
参见ruby - OpenSSL vs GPG for encrypting off-site backups? - Stack Overflow
链接
下面总结了本文中使用的所有链接:
引用
-
https://github.com/openssl/openssl/issues/471 ↩