hash是把一长段文本用一个较短的文本来表示。不同的输入文本即使有很小的差异,也会得到完全不同的hash值。hash算法通常是不可逆的,即很难从hash值反推回原文。
hash算法常用作文本的不可逆加密。比如将用户的密码以hash值的形式存储在数据库中,校验时将用户输入的密码转换成hash值后再跟数据库中的值进行比较。这样即使是数据库管理用也不能轻易得到用户的密码。
+---------+ | | Input Text -----> MD5 +-------> Hash | | +---------+
常用的hash算法有MD5、SHA等。
Linux中计算文件或字符串的MD5值可以用如下命令。
md5sum file.txt ; # 计算文件的MD5值 echo -n "hello" | md5sum ; # 计算字符串的MD5值。-n 表示不输出换行符 # 也可以用 printf "%s" "hello" 来代替