手机信息虽然是敏感数据,但是在大部分情况下,都不会进行处理保存,因为如果你的数据库能被攻破,大概率你的服务器也已经被攻破了,别人可以直接拖你整个服务器去慢慢玩。 如果你觉得需要,可以使用像 AES 这些效率较高的算法进行处理,当然,也请妥善保存秘钥。 当然,如果每个信息都去处理一下 肯定是不划算的,可以把你认为需要进行处理的数据进行封包,序列化后进行存储。 如果是常用信息,非常不建议这样操作,因为每次的解密也是需要开销的,当然这对 AES 这类算法来说几乎忽略不计。 Hash 不是加密 再度强调 md5 和 sha1 不是加密。其为 哈希摘要算法,不可逆。现有的解密是因为彩虹表的存在,只要你乐意,你也可以预先把 13000000000 到 19000000000 的 hash 值算出来,存到数据库,这就形成了一个简单的彩虹表,但是,如果对 hash 进行加盐处理后,比如 原文是 13122223333,现在给他加盐变成 xxxxxxx13122223333xxxxxx.$%^&* ,能碰撞出来的几率就会根据位数和字符复杂度成倍增长。一般只是对像用户密码这些,敏感数据才做此类处理。但是 这些算法并不绝对安全,因为这两个算法,同一个原文计算出来的 hash 始终是相同的。 在 php 中,有 password_hash,password_verify,password_needs_rehash ,使用这三个方法可以构建出安全的 密码存储。 如果你使用哈希算法对这些信息进行了处理,那当你需要时,如何知道用户的手机号?比如用户账号异常你需要推送信息过去?
手机信息虽然是敏感数据,但是在大部分情况下,都不会进行处理保存,因为如果你的数据库能被攻破,大概率你的服务器也已经被攻破了,别人可以直接拖你整个服务器去慢慢玩。
如果你觉得需要,可以使用像
AES
这些效率较高的算法进行处理,当然,也请妥善保存秘钥。当然,如果每个信息都去处理一下 肯定是不划算的,可以把你认为需要进行处理的数据进行封包,序列化后进行存储。
如果是常用信息,非常不建议这样操作,因为每次的解密也是需要开销的,当然这对 AES 这类算法来说几乎忽略不计。
Hash 不是加密
再度强调
md5
和sha1
不是加密。其为 哈希摘要算法,不可逆。现有的解密是因为彩虹表的存在,只要你乐意,你也可以预先把13000000000
到19000000000
的 hash 值算出来,存到数据库,这就形成了一个简单的彩虹表,但是,如果对 hash 进行加盐处理后,比如 原文是13122223333
,现在给他加盐变成xxxxxxx13122223333xxxxxx.$%^&*
,能碰撞出来的几率就会根据位数和字符复杂度成倍增长。一般只是对像用户密码这些,敏感数据才做此类处理。但是 这些算法并不绝对安全,因为这两个算法,同一个原文计算出来的 hash 始终是相同的。在 php 中,有
password_hash
,password_verify
,password_needs_rehash
,使用这三个方法可以构建出安全的 密码存储。如果你使用哈希算法对这些信息进行了处理,那当你需要时,如何知道用户的手机号?比如用户账号异常你需要推送信息过去?