是否有用于加密文件或目录的工具?


66

加密单个文件或文件夹的最流行方法是什么?


问题有点不清楚。您是要手动加密还是解密文件?
psusi 2011年

4
代替“最受欢迎”的解决方案可能会有所帮助(按照psusi的问题)。您是否在寻找简单,可靠,本地,安全,快速,开源的组合?全部还是部分?
belacqua

7
我想补充一点,与某些答案相反,Debian / Ubuntu / Fedora / Red Hat / Arch Linux / OpenSuse / Gentoo / etc 不将 TrueCrypt 视为免费软件或开源
2011年

Answers:


46

GnuPG(GPG)可以使用非对称和对称加密。非对称加密涉及两个密钥,一个用于加密的公钥和一个用于解密的私钥。有关非对称密钥用法,请参阅此页面上的djeikyb答案

对于对称加密,加密和解密密钥相等。重要的是要意识到大多数人都很难选择强密码。因此,使用密码的加密方案应使用密钥派生功能,该功能需要更多资源(时间,内存)来减慢暴力攻击的速度。

有关GnuPG的KDF的说明,请参阅此Crypto Stack Exchange帖子。对称加密的用法示例:

gpg --symmetric < unencrypted_file > encrypted_file

解密:

gpg --decrypt < encrypted_file > decrypted_file

请注意,gpg默认情况下会缓存symkey(已记录的行为)。为了避免这种情况,请使用相关答案中--no-symkey-cache所述的选项。

gpg的手册页


能够选择正确密钥的用户的旧答案,请参见下面的注释

对于单个文件,openssl这非常有用,尤其是在通过不安全的通道(例如电子邮件)发送文件时。它是免费的(金钱和自由),与Truecrypt不同,Truecrypt只是免费的。

注意:您在此处输入的密码将由一个MD5迭代1处理。如果您选择密码“ 123456”,那么您的安全性将很小。

加密:

openssl aes-256-cbc -salt -in unencrypted_file -out encrypted_file

系统将要求您输入密码,您必须输入两次。

解密:

openssl aes-256-cbc -d -in encrypted_file -out unencrypted_file

enc程序的手册页。

1 openssl enc使用-md选项(默认为md5)定义的摘要函数,并调用EVP_BytesToKey()迭代计数为1的函数。可以在openssl源代码中找到该函数apps/enc.c


有没有办法做到这一点而无需密码?
阿萨夫·拉维

@Assaf Lavie:OpenSSL不支持密钥文件,尽管它可以从文件的第一行读取密码。阅读openssl的手册页,密码短语参数部分
Lekensteyn'3

另外,您可以使用“ -a”标志来复制已加密的文本,如下所示:“ openssl aes-256-cbc -a -salt -in unencrypted_file -out
encryption_file

@ v2r要为更多读者添加:-abase64编码输入(的别名-base64),要对其解密,还需要添加该-a选项。
Lekensteyn'2

1
@Lucio aes-256是的别名aes-256-cbc,没有区别。CBC是分组密码的一种操作模式。有关enc(1)支持的密码列表,请参见的手册页。
Lekensteyn

30

我为此使用Seahorse。它是GnuPG的Gnome前端,并与鹦鹉螺很好地集成:Nautilus集成

要获得nautilus集成,请seahorse-nautilus从软件中心安装软件包:seahorse-nautilus 安装seahorse-nautilus


3
仅当您在系统中创建了GPG密钥时,此方法才有效...
hhlp 2011年

3
@hhlp:djeikyb的答案说明了如何执行此操作。
idbrii 2011年

1
我想加密我的GPG密钥。
KI4JGT 2014年

19

TrueCrypt已停产,不安全的源可用免费软件磁盘加密软件。


2
+1(带有或不带有GUI)的encfs非常有用,足以满足大多数目的。
loevborg 2011年

3
Cryptkeeper非常棒-简单,强大,轻而易举地通过Dropbox进行设置(askubuntu.com/questions/19613/…)。
Scaine

出于许可方面的考虑,TrueCrypt并未打包在Ubuntu(或任何其他主要发行版)中。
MagicFab

2
TrueCrypt不是那种开源的。en.wikipedia.org/wiki/…–
yuric

4
“警告:使用TrueCrypt是不安全的”
-TrueCrypt

16

cli方法可以是GnuPG,也可以是tar。这是一个简短的参考指南,您确实应该阅读文档。

首先运行gpg --gen-key。按照提示生成您的公钥/私钥对。现在您可以加密文件了:gpg -e foo.txt。这将创建一个名为的文件foo.txt.gpg。GnuPG不会删除原始的未加密文件,这取决于您是否希望它徘徊。要解密foo.txt.gpg,请运行gpg foo.txt.gpg。解密将在覆盖现有文件之前提示您。

如果需要加密目录,请先将其压缩:

tar -cf foo.tar foo/
gpg -e foo.tar

您可以根据需要重命名加密文件。解密后,将保留原始文件名。


2
这种方法的优点是:首先,它不需要安装其他软件包;其次,它不需要root访问。我将压缩添加到tar命令(xz或gz)。
Panther

12

还有eCryptfs,Ubuntu用来加密家庭目录。

您可以在安装时选择主目录加密,或者$HOME/Private默认情况下可以使用ecryptfs-setup-private实用程序设置单个目录。可以将该文件夹配置为在登录时自动挂载,在注销时自动挂载。$HOME/Private递归地加密其中的每个文件和文件夹。


不幸的是,eCryptfs非常慢。另外,最新版本中的错误很少
-ruX

相反,如果有什么eCryptfs比gpg快,默认情况下,gpg会尝试在加密之前进行压缩。现在大多数Android都使用eCryptfs
Xen2050 2014年

2

您也可以通过wxWidgets GUI使用“学术签名”来使用椭圆曲线加密。它是开源的,但不在存储库中。它主要执行ECC非对称加密,签名和时间戳。但是该工具还有一个菜单项,用于调用Gnupg(RSA)并直接访问提供AES和其他算法的文件的对称加密/解密。它的主页在这里:https : //www.academic-signature.org

我经常使用它来保护传输中的文件和对学术文件进行数字签名(成绩单,推荐信,成绩单等)。


1

我采纳了其他一些建议,并创建了一个简单的shell脚本包装器(对于懒惰者)

https://github.com/orionM/ssl-crypt-tools

请享用


1
嗯,bash脚本使用openssl aes-256-cbc ...您知道if [ $? -ne 0 ] ; then... fi可以使用||吗?而且有些人认为OpenSSL “ *在去年[ Heartbleed ]中曾有几个主要的安全漏洞,而Snowden文件显示GPG是少数在正确使用时可能会破坏NSA的程序之一。OpenSSL代码也是一个完整的污水池,并且测试范围很糟糕。(公开:[他]在“ OpenSSL很烂;让我们修复它”项目上工作。)– jbarlow *”
Xen2050年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.