2.8 加密工具与散列

《Linux Shell 脚本攻略(第 2 版)》读书笔记

crypt

加密文件

$ crypt file.crypt
Enter passphrase:

# 或者通过命令行参数来提供口令
$ crypt PASSPHRASE file.crypt

解密文件

$ crypt PASSPHRASE -d output_file
# 解密之后将内容存储到 output_file 文件中

gpg(GNU 隐私保护)

用 gpg 加密文件

$ gpg -c file
Enter passphrase:
# 加密后的默认文件名为:file.gpg

用 gpg 解密文件

$ gpg file.gpg
# 解密之后的文件默认文件名:file

Base64

将文件编码为 Base64 格式

$ base64 file > file.base64
# 或者
$ cat file | base64 > file.base64

解码 Base64 数据

$ base64 -d file.base64 > output_file
# 或者
$ cat file.base64 | base64 -d > output_file

md5sum 与 sha1sum

md5sum 与 sha1sum 都是单项散列算法,均无法逆推出原始数据。
它们通常用于验证数据完整性或为特定数据生成唯一的密钥:

$ md5sum file
bbe02f946d5455d74616fc9777557c22  file

$ sha1sum file
046c168df2244d3a13985f042a50e479fe56455e  file

尽管使用广泛,但 md5sum 与 sha1sum 已经不再安全。

shadow-like 散列(salt 散列)

在 Linux 中,用户密码都是一散列值形式存储在文件/etc/shadow中的。

$ sudo cat /etc/shadow
root:$6$e3zx9pFN6$OP7dFHlXRLBPvmiQvJAMUz/6sdbjrF7OjnGSBPxTKQKfLxTbCE2tDAz6s0q2jAs9rqwXBW5pf1e1mXt8YhKW4.:17833:0:99999:7:::

shadow 密码通常都是 salt 密码。所谓 salt 就是额外的一个字符串,用来起一个混淆的作用,是加密更加不易被破解。salt 由一些随机位组成,被用作密钥生成函数的输入之一,以生成密码的 salt 散列值。

$ openssl passwd -1 -salt 3d709e89c PASSWORD
$1$3d709e89$yl0Ry.0ji3JDNMGKtK4pq0

注意看输出中的$3d709e89,就是 salt 字符串。而且比我输入的字符串末尾少了一个c字符。这里要说明的是:-salt只读取前 8 个字符,后面的都会舍弃。少于 8 个字符也是可以的。

后面$yl0Ry.0ji3JDNMGKtK4pq0就是加密后的密码文本。

你可能感兴趣的:(2.8 加密工具与散列)