---
author: Gabriel Cánepa
category: 技术
comments_data:
- date: '2016-11-10 19:31:28'
  message: 杀鸡焉用牛刀，用 7z 会方便的多。
  postip: 182.139.90.224
  username: 来自四川成都的 Chrome 53.0|GNU/Linux 用户
- date: '2016-11-10 20:59:41'
  message: "嗯，我也是喜欢用7z，很方便<br />\r\n7z -p123 -mhe -mx0 a test.7z a.txt<br />\r\n<br
    />\r\n-p 123 密码<br />\r\n-mx 0 压缩级别：仅储存"
  postip: 39.159.22.147
  username: kashu [Chromium 66.0|Xubuntu 14.04]
- date: '2016-11-11 07:48:26'
  message: "不过话说回来，在安装或编译包受限的环境这不失为一种加密方法。<br />\r\nP.S. 我在 Windows 中也利用类似的方法，使用本来用于数字证书方面的命令
    certutil 实现对任意文件的 base64 编码/解码。这个命令其实主要是用在域控环境中，Workstation 上用途则受限制。"
  postip: 118.122.120.11
  username: 来自四川成都的 Chrome 54.0|GNU/Linux 用户
- date: '2016-11-11 07:55:26'
  message: "certuitl -encode demo.7z txt<br />\r\ntype txt | clip<br />\r\n<br />\r\n用这个命令可以方便的将几十
    MiB 的二进制文件转换为文本文件，通过剪贴板经由 RDP 远程桌面协议复制到其他机器上。<br />\r\n<br />\r\nsed '1d;$d' txt
    | base64 --decode<br />\r\nsed '1d;$d' txt | base64 --decode | xxd<br />\r\n<br
    />\r\n在 linux 下的解码。 注意第一个命令组合没有考虑文字编码。"
  postip: 118.122.120.11
  username: 来自四川成都的 Chrome 54.0|GNU/Linux 用户
count:
  commentnum: 4
  favtimes: 3
  likes: 0
  sharetimes: 0
  viewnum: 12299
date: '2016-11-10 18:01:00'
editorchoice: false
excerpt: 我找到了一个用 tar（Linux 的一个压缩打包工具）和 OpenSSL 来解决的方案。借助这两个工具，你真的可以毫不费力地创建和加密 tar
  归档文件。
fromurl: http://www.tecmint.com/encrypt-decrypt-files-tar-openssl-linux/
id: 7947
islctt: true
largepic: /images/p/201611/10/180146b03p0ddq0pc9ipx3.jpg
permalink: /article-7947-1.html
pic: /images/p/201611/10/180146b03p0ddq0pc9ipx3.jpg.thumb.jpg
related: []
reviewer: ''
selector: ''
summary: 我找到了一个用 tar（Linux 的一个压缩打包工具）和 OpenSSL 来解决的方案。借助这两个工具，你真的可以毫不费力地创建和加密 tar
  归档文件。
tags:
- 加密
- OpenSSL
- tar
thumb: false
title: 怎样用 Tar 和 OpenSSL 给文件和目录加密及解密
titlepic: true
translator: OneNewLife
updated: '2016-11-10 18:01:00'
---

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


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


![](/images/p/201611/10/180146b03p0ddq0pc9ipx3.jpg)


在这篇文章中，我们将了解如何使用 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 归档文件](/images/p/201611/10/180159fz5mmdqtesh33m3q.png)


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


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


我们研究了一种使用 OpenSSL（一个 openssl 命令行工具）加密 tar 包的简单技术，你可以参考它的<ruby> 手册页 <rp>  （ </rp> <rt>  man page </rt> <rp>  ） </rp></ruby>来获取更多信息和有用的命令。




---


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


作者：[Gabriel Cánepa](http://www.tecmint.com/author/gacanepa/) 译者：[OneNewLife](https://github.com/OneNewLife) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出