Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


怎样用 Tar 和 OpenSSL 给文件和目录加密及解密

2016-11-10 18:01    评论: 4 收藏: 3    

当你有重要的敏感数据的时候,给你的文件和目录额外加一层保护是至关重要的,特别是当你需要通过网络与他人传输数据的时候。

由于这个原因,我在寻找一个可疑在 Linux 上加密及解密文件和目录的实用程序,幸运的是我找到了一个用 tar(Linux 的一个压缩打包工具)和 OpenSSL 来解决的方案。借助这两个工具,你真的可以毫不费力地创建和加密 tar 归档文件。

在这篇文章中,我们将了解如何使用 OpenSSL 创建和加密 tar 或 gz(gzip,另一种压缩文件)归档文件:

牢记使用 OpenSSL 的常规方式是:

# openssl command command-options arguments

在 Linux 中加密文件

要加密当前工作目录的内容(根据文件的大小,这可能需要一点时间):

# tar -czf - * | openssl enc -e -aes256 -out secured.tar.gz

上述命令的解释:

  1. enc - openssl 命令使用加密进行编码
  2. -e – 用来加密输入文件的 enc 命令选项,这里是指前一个 tar 命令的输出
  3. -aes256 – 加密用的算法
  4. -out – 用于指定输出文件名的 enc 命令选项,这里文件名是 secured.tar.gz

在 Linux 中解密文件

要解密上述 tar 归档内容,使用以下命令。

# openssl enc -d -aes256 -in secured.tar.gz | tar xz -C test

上述命令的解释:

  1. -d – 用于解密文件
  2. -C – 提取内容到 test 子目录

下图展示了加解密过程,以及当你尝试执行以下操作时会发生什么:

  1. 以传统方式提取 tar 包的内容
  2. 使用了错误的密码的时候
  3. 当你输入正确的密码的时候

在 Linux 中加密和解密 Tar 归档文件

在 Linux 中加密和解密 Tar 归档文件

当你在本地网络或因特网工作的时候,你可以随时通过加密来保护你和他人共享的重要文本或文件,这有助于降低将其暴露给恶意攻击者的风险。

我们研究了一种使用 OpenSSL(一个 openssl 命令行工具)加密 tar 包的简单技术,你可以参考它的手册页man page来获取更多信息和有用的命令。


via: http://www.tecmint.com/encrypt-decrypt-files-tar-openssl-linux/

作者:Gabriel Cánepa 译者:OneNewLife 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

发表评论


最新评论

我也要发表评论

来自四川成都的 Chrome 54.0|GNU/Linux 用户 2016-11-11 07:55
certuitl -encode demo.7z txt
type txt | clip

用这个命令可以方便的将几十 MiB 的二进制文件转换为文本文件,通过剪贴板经由 RDP 远程桌面协议复制到其他机器上。

sed '1d;$d' txt | base64 --decode
sed '1d;$d' txt | base64 --decode | xxd

在 linux 下的解码。 注意第一个命令组合没有考虑文字编码。
1 回复
来自四川成都的 Chrome 54.0|GNU/Linux 用户 2016-11-11 07:48
1
来自四川成都的 Chrome 53.0|GNU/Linux 用户 发表于 2016-11-10 19:31 的评论:
杀鸡焉用牛刀,用 7z 会方便的多。
2
kashu [Chromium 66.0|Xubuntu 14.04] 发表于 2016-11-10 20:59 的评论:
嗯,我也是喜欢用7z,很方便
7z -p123 -mhe -mx0 a test.7z a.txt

-p 123 密码
-mx 0 压缩级别:仅储存
不过话说回来,在安装或编译包受限的环境这不失为一种加密方法。
P.S. 我在 Windows 中也利用类似的方法,使用本来用于数字证书方面的命令 certutil 实现对任意文件的 base64 编码/解码。这个命令其实主要是用在域控环境中,Workstation 上用途则受限制。
2 回复
kashu [Chromium 66.0|Xubuntu 14.04] 2016-11-10 20:59
1
来自四川成都的 Chrome 53.0|GNU/Linux 用户 发表于 2016-11-10 19:31 的评论:
杀鸡焉用牛刀,用 7z 会方便的多。
嗯,我也是喜欢用7z,很方便
7z -p123 -mhe -mx0 a test.7z a.txt

-p 123 密码
-mx 0 压缩级别:仅储存
1 回复
来自四川成都的 Chrome 53.0|GNU/Linux 用户 2016-11-10 19:31
杀鸡焉用牛刀,用 7z 会方便的多。
1 回复

热点评论

来自四川成都的 Chrome 54.0|GNU/Linux 用户 2016-11-11 07:48
不过话说回来,在安装或编译包受限的环境这不失为一种加密方法。
P.S. 我在 Windows 中也利用类似的方法,使用本来用于数字证书方面的命令 certutil 实现对任意文件的 base64 编码/解码。这个命令其实主要是用在域控环境中,Workstation 上用途则受限制。
2
kashu [Chromium 66.0|Xubuntu 14.04] 2016-11-10 20:59
嗯,我也是喜欢用7z,很方便
7z -p123 -mhe -mx0 a test.7z a.txt

-p 123 密码
-mx 0 压缩级别:仅储存
1
来自四川成都的 Chrome 54.0|GNU/Linux 用户 2016-11-11 07:55
certuitl -encode demo.7z txt
type txt | clip

用这个命令可以方便的将几十 MiB 的二进制文件转换为文本文件,通过剪贴板经由 RDP 远程桌面协议复制到其他机器上。

sed '1d;$d' txt | base64 --decode
sed '1d;$d' txt | base64 --decode | xxd

在 linux 下的解码。 注意第一个命令组合没有考虑文字编码。
1
来自四川成都的 Chrome 53.0|GNU/Linux 用户 2016-11-10 19:31
杀鸡焉用牛刀,用 7z 会方便的多。
1
返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。