在Ubuntu 12.04 LTS中加密/解密单个文件

我需要能够在12.04 LTS上加密/解密存储在我的外部硬盘上的单个文本文件,最好是一个图形用户界面应用程序,如果没有的话,也可以使用命令行。谢谢。
5个回答

使用openssl加密单个文件的简单方法如下:
openssl des3 < youfile.txt > yourfile.txt.des3

这将提示您输入一个密码短语,您稍后在解密文件时需要输入该密码短语。
openssl des3 -d < yourfile.txt.des3 > yourfile.txt.decrypted

为了使这个“图形化”,你可以将它放在一个Nautilus脚本中,并从上下文菜单中访问。(请参阅Nautilus的文档。)
更新:
des3只是一个示例。运行openssl enc -ciphers或openssl list -cipher-algorithms来查看完整的密码列表。

12为什么选择des3?你可以用openssl aes-128-cbc进行更快速、更有效的加密。 - Brendan Long
@BrendanLong:我猜原因是man openssl中没有提到aes-128-cbc,不知道为什么。不过它确实有效。 - Walter Tross
注意,我刚刚尝试在Ubuntu上使用DES加密文件,并在Windows上解密,但出现了错误7C230000:error:1C800064:Provider routines:ossl_cipher_unpadblock:bad decrypt:providers\implementations\ciphers\ciphercommon_block.c:124 - undefined

假设一个人想要加密一个名为“message.txt”的文件:
1. 使用 GPG 加密文件,供个人使用
I. 使用密码短语加密文件(而不是私钥)
I.i 命令: gpg -c message.txt 执行该命令;它会要求输入密码(和密码确认),并生成加密的'message.txt.gpg',是二进制的。
I.ii 如果您想要生成一个 ASCII 加密文件,则可以使用 base64(我认为)该文件, gpg -c --armor message.txt 这将生成一个 'message.txt.asc',与之前命令生成的相同,但是以 base64 编码,即文本模式中的加密文件(.asc,而不是二进制的 .gpg)。
II. 使用私钥加密文件

II.i. 如果你想使用你的密钥来加密文件,而不仅仅是使用密码短语,可以使用以下命令:gpg -e -r 'yourname' message.txt。 参数 'yourname' 应该包含你用于创建私钥的部分名称。如果你不提供 -r 参数,gpg 将会询问。你可以输入你的名称(与你在命令行上输入的相同)。

II.ii. 第 II.i 点将会给你一个二进制文件。如果你想得到一个 ASCII 文件,可以使用 --armor 参数:gpg -e -r 'yourname' --armor message.txt

2. 使用 GPG 解密文件

要解密文件,请使用以下命令:gpg -d --output OUTPUTFILE message.txt.gpg。如果密码正确,它将要求输入密码并解密文件message.txt.gpgOUTPUTFILE。这个密码可以直接使用(第一点,-c参数),也可以通过私钥使用(第二点,-e参数)。无论是二进制(.gpg)还是ASCII(.asc)文件都适用。如果不指定--output FILE,则输出到控制台(stdout),然后您也可以将其重定向到文件:gpg -d message.txt.gpg > OUTPUTFILE.txt 两者效果相同。8 )



对于(GnuPG) 1.4.16版本
gpg -a --output outfile.txt --encrypt infile.txt

接下来会提示您:
Enter the user ID.  End with an empty line:

“用户 ID” 可以通过运行来查找

gpg --list-keys