这篇短文最早写在 -Maimai 上,后来转发到 -Linkedin 上,再后来备份到 -Wordpress-wadelau 上,现在再复制到 -Ufqi-Blog 上。
关于账号密码的保存,昨天回复的仓促,重理一下。
先区分是加密和信息摘要,两者区别是内容是否可逆。能从密文恢复到原文的是加密,不能的是消息摘要,或信息摘要。加密又可分为算法加密和使用秘钥加密,区别是在加解密过程中是否使用“秘钥”。置换、交换、取模异或等可看做无秘钥加密,仅依靠某种算法实现加密。
使用“秘钥”加密又分为对称加密和非对称加密。区别是对称加密收发两方用同一个密钥,非对称基于一对密钥: 公钥和私钥。发方用收方的公钥加密,收方用自己的私钥解密密文;或者发方用自己的私钥加密,收方用发方的公钥解密。
回到密码保存这个话题,明文存储不是人干的事。密文存储是业界标准做法。至于密文是加密后内容,还是明文的消息摘要,一般从形式上可以判断,消息摘要多会生成一个由0-9, a-f的字符串。密文则各种字符串形态均有,如 -base62x 的输出。
消息摘要一般能满足账号密码保护需求,但自从md5被碰撞算法找回原型后,md5就不安全用在密码上了。这方面可以选升级的md6, sha1, sha256, sha512, sha1024等。
至于加密的对称算法,有很多。加密的非对称算法,也有不少,多用rsa。
加解密,矛和盾。哪个锐利,哪个坚厚?