OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。但是您是否知道使用OpenSSL可以用它来对文件或消息进行加密呢?那么小编就教您几个简单好学的小技巧。

一:对消息如何进行加密和解密呢?

首先我们不妨对简单的消息进行加密下面这个命令将使用Base编码方法(Base Encoding)对"Welcome to LinuxCareercom"(欢迎访问LinuxCaeercom)这个消息进行加密

$ echo "Welcome to LinuxCareercom" | openssl enc base

VVsYtZSBbyBMaWeENhcmVlcijbK

上述这个命令的输出是一个经过加密的字符串含有已经过编码的消息"Welcome to LinuxCareercom"想对经过编码的字符串进行解密恢复成原始消息我们就要颠倒顺序加上d选项进行解密

$ echo "VVsYtZSBbyBMaWeENhcmVlcijbK" | openssl enc base d

Welcome to LinuxCareercom

上述加密易于使用不过它缺少密码的一个重要特性这个重要特性应该可用于加密比如说试着用密码"pass"对下列字符串进行解密

UFsdGVkXxscMhkpIAJqdN/nSjjTcNrDUCCBSLpZQxQDbipdkexj

为此就要再次使用OpenSSL这回带d选项和编码方法aescbc

echo "UFsdGVkXxscMhkpIAJqdN/nSjjTcNrDUCCBSLpZQxQDbipdkexj" | openssl

enc aescbc d a

你恐怕已经猜想到了要像上面那样用密码创建经过加密的消息可以使用下面这个命令

$ echo "OpenSSL" | openssl enc aescbc a enter aescbc encryption password:

Verifying  enter aescbc encryption password:

UFsdGVkXEHmeD+qmCfkEsXDTnnCn/sblr=

如果你想把OpenSSL的输出存储到文件中而不是存储到STDOUT只要使用STDOUT重定向">"将经过加密的输出存储到文件中时你还可以删去a选项因为不再需要输出是基于ASCII文本的

$ echo "OpenSSL" | openssl enc aescbc > openssldat

enter aescbc encryption password:

Verifying  enter aescbc encryption password:

$ file openssldat

openssldat: data

想对openssldat文件进行解密恢复至原始消息请使用

$ openssl enc aescbc d in openssldat

enter aescbc decryption password:

OpenSSL

二:怎样对文件进行加密和解密呢?

想使用OpenSSL对文件进行加密其实就跟对消息进行加密一样简单唯一的区别在于我们不是使用echo命令而是使用in选项后面跟以我们想进行加密的实际文件并使用out选项这会指令OpenSSL将经过加密的文件存储到某个名称的文件中

$ openssl enc aescbc in /etc/services out servicesdat

想对我们的服务文件进行解密恢复成原样请使用

$ openssl enc aescbc d in servicesdat > servicestxt

enter aescbc decryption password:

三:对目录进行加密和解密

首先你需要创建gzip打包文件(tarball)然后用上述方法对该打包文件进行加密也可以使用pipe同时完成这两项任务

# tar cz /etc | openssl enc aescbc out etctargzdat

tar: Removing leading `/ from member names

enter aescbc encryption password:

Verifying  enter aescbc encryption password:

想对整个etc/目录进行解密并提取到当前的工作目录请使用

# openssl enc aescbc d in etctargzdat | tar xz

enter aescbc decryption password:

上述方法对自动备份加密目录来说相当有用

总结:

以上的几个加解密都是OpenSSL的基础部分,但说到这款加密工具包其实它的用途还是很广泛的!如果兴趣的小伙伴,可以在网上搜索相关知识进行学习的哦!