crypt
加密文件
$ crypt <file >file.crypt
Enter passphrase:
# 或者通过命令行参数来提供口令
$ crypt PASSPHRASE <file >file.crypt
解密文件
$ crypt PASSPHRASE -d <file.crypt >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
就是加密后的密码文本。