HASH概述
Hash,一般翻译做"散列",也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值. 这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入kennel会散列成相同的输出,所以不可能从散列值来确定唯一的输入值.简单的说就是一种将任意长度的消息压缩到某一固定的消息摘要的函数
Hash的特点
1、算法是公开的
2、对相同数据运算,得到的结果是一样的
3、对不同数据运算,如MD5得到的结果默认是128位(2进制位),32个字符(16进制标识) (1个16进制位 = 4个2进制位, 1111)
4、hash值是没法逆转的
对称加密: DES、3DES、AES
HASH: MD5、SHA1/256
用户登录密码 ,直接md5, 可以避免pwd明文传输, 但是容易泄漏; 可以+salt(加盐)后再MD5,盐一旦泄漏也是不安全的;
HMAC加密方案: 用户注册时, 服务器生成Key给客户端(用于对pwd的加密), 客户端用key对pwd做hash, 每一个用户对应一个key, 即便是一个用户对应一个key, 也会被网络拦截, 客户端可以((HMAC密码哈希值)+"2021030922").md5, 服务端验证数据库存储的 ((HMAC密码哈希值)+"2021030923").md5 || ((HMAC密码哈希值)+"2021030923").md5 是否和客户端一致