加密技术主要是防止数据遭受未经授权的访问,加密算法很多,我们着重讲解那些标准的加密算法,Linux环境下很多工具可以执行加密和解密
1.crypt
简单的加密工具
从std中接收一个文件或者口令,作为输入
然后将加密后的输出到output
crypt <file> outputfile
Enter password
会要求输入一个口令,我们可以利用命令行来提供口令
crypt PASSWORD <input_file> file
解密则可以
crypt PASSWORD -d <encrypted_file> output_file
2.gpg
GNU privact guard GNU 隐私保护
加密和解密的方式很简单
gpg -c filename
会采用交互的方式读取口令,并生成filename.gpg
解密gpg文件
gpg filename.gpg
然后也会交互的方式读取口令
3.Base64
直接将ASCII字符转换为64位基数的形式
我们采用ASCII字符串描述二进制数据,可以分别进行编码和解码
加密方式
base64 filename > outputfile
或者利用输入
cat file | base64 > outputfile
进行解码
base64 -d file > outputfile
cat base64_file | base64 -d > outputfile
md5sum 和 sha1sum
md5sum和sha1sum都是单向散列算法,无法获取到原始数据
通常用于验证数据完整性或者为特定数据生成唯一的秘钥,
md5sum file
sha1sum file
这就是存储密码的最好方式,我们不需要知道真正的密码,我只需要知道散列值,因为密码以一种明文的方式存储比较冒险
shadowlike散列 又名salted散列
Linux中,用户密码是以一种散列值的形式存储在 /etc/shadow 该文件中一行典型的内容类似是
这就对应着密码的散列值
如果需要对一些重要的文件进行加密,需要使用shell脚本手动添加与用户,我们必须生成shadow密码字符串
其实就是利用一个额外的字符串,计算出一串混淆的字符串,使得加密不容易被破解,被用作秘钥生成函数的输入之一,生成密码的salted散列值
我们使用openssl生成shadow密码
openssl passwd -1 -salt SALT_STRING
PASSWORD
将SALT_STRING替换为随机字符串,同时将PASSWORD替换为自己想用的密码