目录
OpenSSL整个软件包大概可以分成三个主要的功能部分:
1.密码算法库
2.SSL协议库
3. 应用程序
因为我在打靶机过程中涉及到openssl的加密解密,所有写下了这篇关于openssl加密解密的文章
1.加密技术介绍:
加密技术包括两个元素:
算法和密钥。算法是将普通的文本(或者可以理解的信息)与一串数字(密钥)的结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解码的一种钥匙。密钥加密技术的密码体制分为对称密钥体制和非对称密钥体制两种。
1.对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥(加密解密密钥相同)
2.与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥 (privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。(加密公钥,解密私钥;加密私钥,解密公钥)
2.openssl 命令
4.1.dgst(摘要命令)
消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密
openssl dgst 支持的加密类型
blake2b512 blake2s256 md4 md5
rmd160 sha1 sha224 sha256
sha3-224 sha3-256 sha3-384 sha3-512
sha384 sha512 sha512-224 sha512-256
shake128 shake256 sm3
常用参数:
-out filename:将摘要的内容保存到指定文件中
-[md5|md4|md2|sha1|sha|mdc2|ripemd160|dss1] :指定一种摘要算法
加密:
echo -n '123456' | openssl dgst -md5
-n 是为了去除换行符对加密结果的影响
该命令可以用其他代替如:md5sum,sha1sum,sha224sum,sha256sum ,sha384sum,sha512sum
4.2.enc(对称加密命令)
openssL作对称加密需要使用其子命令enc,其用法为:
常规选项:
-help 显示此摘要
-list 列出密码
-ciphers -list 的别名
-e 加密
-d 解密
-p 打印 iv/key
-P 打印 iv/key 并退出
-engine val 使用引擎,可能是硬件设备
输入选项:
-in infile 输入文件
-k val 密码
-kfile infile 从文件中读取密码
输出选项:
-out outfile 输出文件
-pass val 密码短语源
-v 详细输出
-a Base64 编码/解码,取决于加密标志
-base64 与选项 -a 相同
-A 与 -[base64|a] 一起使用,将 base64 缓冲区指定为单行
加密选项:
-nopad 禁用标准块填充
-salt 在 KDF 中使用盐(默认)
-nosalt 不要在 KDF 中使用盐
-debug 打印调试信息
-bufsize val 缓冲区大小
-K val 原始密钥,十六进制
-S val 盐,十六进制
-iv 十六进制的 val IV
-md val 使用指定的摘要从密码创建密钥
-iter +int 指定迭代次数并强制使用PBKDF2
默认值:10000
-pbkdf2 使用基于密码的密钥派生函数 2 (PBKDF2)
使用 -iter 将迭代计数从 10000 更改为
-none 不加密
-* 任何支持的密码
随机状态选项:
-rand val 将给定文件加载到随机数生成器中
-writerand outfile 将随机数据写入指定文件
提供商选项:
-provider-path val 提供程序加载路径(如果需要,必须位于“provider”参数之前)
-provider val 要加载的提供程序(可以指定多次)
-propquery val 获取算法时使用的属性查询
openssl enc支持的加密类型
Cipher commands (see the `enc' command for more details)
aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb
aes-256-cbc aes-256-ecb aria-128-cbc aria-128-cfb
aria-128-cfb1 aria-128-cfb8 aria-128-ctr aria-128-ecb
aria-128-ofb aria-192-cbc aria-192-cfb aria-192-cfb1
aria-192-cfb8 aria-192-ctr aria-192-ecb aria-192-ofb
aria-256-cbc aria-256-cfb aria-256-cfb1 aria-256-cfb8
aria-256-ctr aria-256-ecb aria-256-ofb base64
bf bf-cbc bf-cfb bf-ecb
bf-ofb camellia-128-cbc camellia-128-ecb camellia-192-cbc
camellia-192-ecb camellia-256-cbc camellia-256-ecb cast
cast-cbc cast5-cbc cast5-cfb cast5-ecb
cast5-ofb des des-cbc des-cfb
des-ecb des-ede des-ede-cbc des-ede-cfb
des-ede-ofb des-ede3 des-ede3-cbc des-ede3-cfb
des-ede3-ofb des-ofb des3 desx
rc2 rc2-40-cbc rc2-64-cbc rc2-cbc
rc2-cfb rc2-ecb rc2-ofb rc4
rc4-40 seed seed-cbc seed-cfb
seed-ecb seed-ofb sm4-cbc sm4-cfb
sm4-ctr sm4-ecb sm4-ofb
加密:
OpenSSL 可用密码或者秘钥方式进行加密:
密码:
加密:
openssl enc -aes-256-cbc -salt -in input.txt -out encrypted.dat
解密:
openssl enc -d -aes-256-cbc -in encrypted.dat -out decrypted.txt
密钥:(密钥解密的关键,1.有密文,2.有密钥,3.知道加密算法)
-
使用
-pbkdf2
参数进行加密:openssl enc -aes-256-cbc -salt -pbkdf2 -a -in input.txt -out encrypted.dat
-a 将加密后的结果base64编码
-
使用
-pbkdf2
参数进行解密:openssl enc -d -aes-256-cbc -pbkdf2 -in -a encrypted.dat -out decrypted.txt
-a 先bese64解码再解密
通过使用 -pbkdf2
参数,可以改善密钥派生的安全性,并减少潜在的安全风险。请记得在加密和解密过程中都使用 -pbkdf2
参数以确保安全性。