在Linux上有许多用于加密文件的命令。当您想限制对文件内容的访问时,可以使用文件权限,但文件加密使限制访问更有效。这篇文章比较了一些加密文件的命令,并提供了一个简单的脚本来尝试它们。
当然,加密意味着,一个可以用Linux命令和工具查看的文件会被改变,使其无法使用和不可读,除非您反转加密过程。加密通常不会减少文件的大小,除非也使用压缩。事实上,加密过程可能会使某些文件变大。一些命令在默认情况下进行压缩;其他命令则不压缩。
准备加密文件时要记住的事项包括您打算如何使用它(例如,安全备份、传输到另一个系统)、如何管理密钥以便在需要时对文件进行解密,以及原始文件是保留在原始系统上还是“就地”加密的—您只剩下文件。
注意:有些加密命令可以与公钥/私钥或加密时提供的密码一起使用。这篇文章只显示使用密码/密码的命令。
gpg公司
在Linux上加密文件的一个标准且最广为人知的工具是gpg公司. 它可以提供数字加密和签名服务,不过,在本文中,我们将只讨论使用密码短语加密文件。与其他一些工具不同,gpg公司在加密文件内容之前确实应用了一些文件压缩。
如果您键入这样的命令,文件的内容将使用对称密钥加密。换句话说,加密和解密文件都将使用相同的单词或短语。公钥/私钥可以与-e选项。
$gpg-c大文件
系统将提示您输入密码两次,原始文件将保持不变,如本例所示:
$ls-l BigFile*-rw-rw-r--1 shs shs 107740386 7月10日13:21 BigFile-rw-rw-r--1 shs shs 32359452 7月11日11:00大文件.gpg
请注意,结果文件大小明显减小,原始文件仍然完好无损。
这个gpg公司命令一次只能处理一个文件。
拉链
这个拉链命令通常用于压缩文件并将文件收集到归档文件中,以便于存储和传输。不过,该命令也支持加密。您只需要添加--encrypt选项。
$zip—加密大文件.zip巨型文件
像gpg公司,拉链同时执行加密和压缩,因此生成的文件大小应该比原始文件小得多。
$ls-l BigFile*-rw-rw-r--1 shs shs 107740386 7月10日13:21 BigFile-rw-rw-r--1 shs shs 27587355 7月10日14:40大文件.zip
因为拉链是一个用于创建归档文件的工具,您可以通过在命令行中添加多个文件来将它们添加到加密的捆绑包中。
$zip—加密循环.ziploop1 loop2输入密码:验证密码:adding:loop1(deflated 4%)adding:loop2(deflated 10%)$ls-l loops*-rw-rw-r--1 shs shs 468 Jul 11 09:04循环.zip
7z型
这个7z型命令的工作原理是拉链,但却鼓吹惊人的压缩比。像拉链,它可以在一个加密存档中包含多个文件。要调用加密,请在命令行中的-p选项。
7z一个大文件。7z大文件-p硬质合金$$
$ls-l BigFile*-rw-rw-r--1 shs shs 107740386 7月10日13:21 BigFile-rw-rw-r--1 shs shs 27674 Jul 11 12:37 BigFile.7z
克里普特
另一个加密和解密文件的工具,克里普特(基于Rijndael分组密码)被认为提供了非常强的安全性,并且与所描述的其他命令一样,很容易在命令行上运行。
注意到克里普特删除原始文件(就地加密文件),不会显著更改文件大小,也不会更改文件的日期/时间以反映执行加密的时间。
$ccrypt-e BigFile$ls-l BigFile*-rw-rw-r--1 shs shs 107740418 7月9日10:09大文件.cpt
这个克里普特命令可以用一个命令加密多个文件,但要分别加密它们。
麦克里普特
这个麦克里普特命令提示输入密码两次,保留原始文件不变,并将文件权限更改为加密文件只向文件所有者提供读写访问权限。它提供了很多关于加密算法的选择,还提供了在加密之前压缩文件的选项(参见-z和-p选项)。它可以处理多个文件,但可以分别对它们进行加密。
使用--list选项,密穴将列出可用的加密算法。
$mcrypt—列表cast-128(16):cbc cfb ctr ecb ncfb nofb ofb gost(32):cbc cfb ctr ecb ncfb nofb ofb rijndael-128(32):cbc cfb ctr ecb ecb ncfb nofb ofb twofish(32):cbc cfb ctr ecb ncfb nofb ofb ARCFU cast-256(32):cbc cfb ctr ecb ncfb nofb ofb gost(32):cbc cfb ctr ecb ncfb nofb OF rijndael-192(32):cbc cfb ctr ecb ncfb ncfb nofbofb saferplus(32):cbc cfb ctr ecb ncfb nofb ofb尾迹(32):溪流河豚兼容(56):cbc cfb ctr ecb ncfb nofb ofb des(8):cbc cfb ctr ecb ncfb nofb ofb rijndael-256(32):cbc cfb ctr ecb ecb ncfb nofb ofb serpent(32):cbc cfb ctr ecb ncfb nofb ofb xtea(16):cbc cfb ctr ecb ncfb nofb ofb blowfish(56):cbc cfb ctr ecb ncfb nofb OF enigma(13) :流rc2(128):cbc cfb ctr ecb ncfb nofb ofb三层(24):cbc cfb ctr ecb ncfb nofb ofb
这个麦克里普特命令似乎在使用里恩代尔-128作为其默认加密算法。但是,您可以使用文件压缩文件上的命令:
$文件大文件.bz2.北卡罗来纳州大文件.bz2.nc:mcrypt 2.5加密数据,算法:里恩代尔-128,键大小:32字节,模式:cbc,
用于尝试加密命令的脚本
这个脚本应该被称为“try”,这样您就可以很容易地使用本文介绍的工具进行实验。例如,如果键入“try 7z target”(其中“target”是要加密的文件的名称),则脚本将运行命令来加密文件7z型给你看结果。如果您尝试使用系统上未安装的命令,它将解释说它尚未设置为使用该命令。
#!/bin/bash验证是否提供了2个参数
如果[$#!=2];然后回显“OOPS:command file name required”exit fi#确保请求的加密命令可用,其中$1>/dev/null if[$!=0];然后回显“$1不可用”退出1 fi#确保文件存在,如果[!-f$2];然后echo“没有这样的文件:$2”退出2 fi case$1(在gpg中)gpg-c$2;;ccrypt)ccrypt-e$2;;7z)echo-n“请提供密码:”read password 7z a$2.7z$2-p$password;;zip)zip--加密$2.zip$2;;mcrypt)mcrypt-p$2;*)echo“对不起,此脚本尚未设置为$1”exit;;esac#显示文件ls-l$2*
这个尝试脚本没有设置为一次加密多个目标文件,因为它使用$2(提供给脚本的第二个参数)来指定目标文件,如果提供了多个文件作为参数,则退出。请随意修改或添加脚本以满足您的需要。