Shell 加密工具与散列,加密技术主要用于防止数据遭受未经授权的访问。和上面讲的校验和算法不同,加密算法可以无损地重构原始数据。可用的加密算法有很多,我们将讨论Linux/Unix中最常用到的那些。
实战演练
让我们看看crypt
、gpg
以及base64
的用法。
crypt
命令通常并没有安装在Linux系统中。它是一个简单的加密工具,相对而言不是那么安全。该命令从stdin
接受输入,要求用户创建口令,然后将加密数据输出到stdout
:
$ crypt <input_file >output_file
Enter passphrase:
我们在命令行上提供口令:
$ crypt PASSPHRASE <input_file >encrypted_file
如果需要解密文件,可以使用:
$ crypt PASSPHRASE -d <encrypted_file >output_file
gpg
(GNU privacy guard,GNU隐私保护)是一种应用广泛的工具,它使用加密技术来保护文件,以确保数据在送达目的地之前无法被读取。
gpg
签名同样广泛用于Email通信中的邮件“签名”,以证明发送方的真实性。
用gpg
加密文件:
$ gpg -c filename
命令会采用交互方式读取口令并生成filename.gpg。使用以下命令解密gpg文件:
$ gpg filename.gpg
上述命令读取口令并解密文件。
本教程并没有涉及
gpg
的过多细节。如果你感兴趣,希望进一步了解,请访问http://en.wikipedia.org/wiki/GNU_Privacy_Guard。
- Base64是一组相似的编码方案,它将二进制数据转换成以64为基数的形式(radix-64 representation),以可读的ASCII字符串进行描述。这类编码程序可用于通过E-mail传输二进制数据。
base64
命令能够编码/解码Base64字符串。要将文件编码为Base64格式,可以使用:
$ base64 filename > outputfile
或者
$ cat file | base64 > outputfile
base64
命令可以从stdin
中读取。
解码Base64数据:
$ base64 -d file > outputfile
或者
$ cat base64_file | base64 -d > outputfile