在Linux上有许多用于加密文件的命令。当您想限制对文件内容的访问时,可以使用文件权限,但是文件加密使限制访问更加有效。这篇文章比较了一些用于加密文件的命令,并提供了一个简单的脚本来试用它们。加密当然意味着您可以使用Linux命令和工具查看的文件已以无法使用和无法读取的方式进行了更改,除非您取消加密过程。除非也使用压缩,否则加密通常不会减小文件的大小。
实际上,加密过程可能会使某些文件变大。默认情况下,某些命令会压缩,别人没有。准备加密文件时要记住的事情包括您打算如何使用它(例如,安全备份,传输到另一个系统),如何管理密钥以便可以在需要时解密文件以及是否保留原始文件在原始系统上或已“就地”加密-仅保留文件的加密版本。
注意:某些加密命令可以与公用/专用密钥或加密时提供的密码一起使用。这篇文章仅显示使用密码/密码的命令。
gpg
gpg是Linux上用于加密文件的标准且最广为人知的工具之一。它可以同时提供数字加密和签名服务,尽管在本文中,我们仅介绍使用密码对文件进行加密。与其他一些工具不同,gpg在加密文件内容之前会进行一些文件压缩。
如果键入这样的命令,则文件的内容将使用对称密钥进行加密。换句话说,相同的词或短语将用于加密和解密文件。公钥/私钥可以与-e选项一起使用。
$ gpg -c BigFile
将提示您两次输入密码,并且原始文件将保持不变,如以下示例所示:
$ ls -l BigFile *
-rw-rw-r-- 1 shs shs 107740386 Jul 10 13:21 BigFile
-rw-rw-r-- 1 shs shs 32359452 Jul 11 11:00 BigFile.gpg
请注意,结果文件的大小已大大减少,并且原始文件仍然完好无损。
该GPG命令只有一个文件,在工作一段时间。
压缩
该压缩命令通常用来压缩文件,收集文件到档案,便于储存和运输。但是,该命令也支持加密。您只需添加--encrypt选项。
$ zip-加密BigFile.zip BigFile
像gpg一样,zip同时进行加密和压缩,因此生成的文件大小应比原始文件小得多。
$ ls -l BigFile *
-rw-rw-r-- 1 shs shs 107740386 Jul 10 13:21 BigFile
-rw-rw-r-- 1 shs shs 27587355 Jul 10 14:40 BigFile.zip
由于zip是用于创建档案的工具,因此您可以通过在命令行上将多个文件添加到加密的捆绑软件中来进行添加。
$ zip-加密loops.zip loop1 loop2
输入密码:
验证密码:
添加:loop1(放气4%)
添加:loop2(放气10%)
$ ls -l循环*
-rw-rw-r-- 1 shs shs 468 Jul 11 09:04 loops.zip
7z
的7Z命令的工作原理是拉链,但吹捧一个令人惊讶的令人印象深刻的压缩比。像zip一样,它可以在一个加密档案中包含多个文件。要调用加密,请在-p选项后面的命令行中包含加密密码。
$ 7z一个BigFile.7z BigFile -p hard2gue $$
$ ls -l BigFile *
-rw-rw-r-- 1 shs shs 107740386 Jul 10 13:21 BigFile
-rw-rw-r-- 1 shs shs 27674 Jul 11 12:37 BigFile.7z
加密
据信,用于加密和解密文件的另一种工具ccrypt(基于Rijndael块密码)可提供非常强大的安全性,并且与所述其他命令一样,可以在命令行上轻松运行。
请注意,ccrypt会删除原始文件(将文件加密到位),不会显着更改文件大小,也不会更改文件的日期/时间以反映执行加密的时间。
$ ccrypt -e BigFile
$ ls -l BigFile *
-rw-rw-r-- 1 shs shs 107740418 Jul 9 10:09 BigFile.cpt
该ccrypt命令可以用一个命令加密多个文件,但单独进行加密。
加密
该mcrypt的密码命令提示两次,保留原始文件不变并更改文件权限的加密文件只提供读写访问权限,文件所有者。它提供了很多有关加密算法的选择,还提供了在加密之前压缩文件的选项请参阅-z和-p选项。它可以处理多个文件,但分别对它们进行加密。
使用--list选项,mycrypt将列出可用的加密算法。
$ 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 ncfb nofb ofb
twofish(32):cbc cfb ctr ecb ncfb nofb ofb
arcfour(256):流
cast-256(32):cbc cfb ctr ecb ncfb nofb ofb
loki97(32):cbc cfb ctr ecb ncfb nofb ofb
rijndael-192(32):cbc cfb ctr ecb ncfb nofb ofb
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 ncfb nofb ofb
蛇(32):cbc cfb ctr ecb ncfb nofb ofb
xtea(16):cbc cfb ctr ecb ncfb nofb ofb
河豚(56):cbc cfb ctr ecb ncfb nofb ofb
谜(13):流
rc2(128):cbc cfb ctr ecb ncfb nofb ofb
三元组(24):cbc cfb ctr ecb ncfb nofb ofb
所述的mcrypt命令似乎使用的Rijndael-128作为其默认加密算法。但是,您可以通过在压缩文件上使用file命令来验证使用了哪个:
$文件BigFile.bz2.nc
BigFile.bz2.nc:mcrypt 2.5加密数据,算法:rijndael-128,密钥大小:32字节,模式:cbc,
尝试加密命令的脚本
该脚本应称为“ try”,使您可以轻松尝试本文中介绍的工具。例如,如果键入“ try 7z target”(其中“ target”是要加密的文件的名称),则脚本将运行命令以7z加密文件并显示结果。如果您尝试使用系统上未安装的命令,它将说明尚未设置为使用该命令。
#!/ bin / bash
#验证
如果[$#!= 2] 提供了2个参数;然后
回显“ OOPS:命令和文件名必需”
出口
科幻
#确保请求的加密命令可用
其中$ 1> / dev / null
如果[$?!= 0]; 然后
回声“ $ 1不可用”
1号出口
科幻
#确保文件存在
如果[!-f $ 2]; 然后
回声“没有这样的文件:$ 2”
2号出口
科幻
案例$ 1
gpg)gpg -c $ 2
;;
ccrypt)ccrypt -e $ 2
;;
7z)echo -n“请提供密码:”
读取密码
7z $ 2.7z $ 2 -p $ password
;;
zip)-加密$ 2.zip $ 2
;;
mcrypt)mcrypt -p $ 2
;;
*)echo“对不起,此脚本尚未设置为$ 1”
出口;;
埃萨克
#显示文件
ls -l $ 2 *
在尝试脚本没有设置一个以上的目标文件同时加密,因为它使用$ 2(提供给脚本的第二个参数)指定目标文件并退出,如果超过一个文件作为参数提供。可以随意修改或添加脚本以适合您的需求。
以上就是关于在Linux上加密文件的一些简单选择的全部内容介绍,想了解更多关于Linux的信息,请继续关注中培伟业。