一、前言
各位小伙伴,在项目开发进程中,数据安全问题堪称极其重要的一个模块。可以断言,一个真正上线运营的项目,必定会高度重视数据库中的数据安全。要知道,如果数据库存储明文密码,那将是极度危险的。一旦遭遇攻击或者发生数据泄漏,用户的信息便会大肆暴露,黑客将无所不能,这是绝对不允许的。因此,我们必须进行加密处理,即便黑客获取到了密码信息,也无法知晓原始密码,从而无法登录成功。
那么目前有几种常见的加密方式呢?他们的加密原理又分别是什么呢?下面将为大家介绍一下目前常见的三种加密方式!
二、摘要加密
常见的代表:md5,sha1,sha256
简单来说,摘要加密方式的核心在于哈希值,其借助散列算法实现。摘要的关键概念在于对数据完整性和唯一性的验证。无论密码的长度和复杂程度如何,通过这种方式得到的哈希值均为固定长度。例如,无论输入的是简短的“123”还是极其复杂冗长的密码组合,经过摘要加密处理后,所生成的哈希值长度始终保持一致。
但是!摘要加密有一定的风险。例如:E10ADC3949BA59ABBE56E057F20F883E 就是用 md5 加密的一组密码。他其实是固定的,通过md5解密网站便可以破解。
三、对称加密
常见的代表:AES,DES,3DESC,SM4
对称加密的意思就是说,我们约定了一个密钥。这个密钥一定要好好保存,不能泄漏,一旦泄漏就可以进行逆向的解密,然后我们通过密钥来进行加密解密的操作。
加密的过程:密码+密钥 生成 密文
解密的过程:密文+密钥 反解 密码
再次提醒大家,密钥一定一定要做好其中的保存。对称加密的安全性相比摘要加密有所提高,但是我们还是无法避免密钥在项目与数据库交互中不会被恶意拦截或者丢失,这样我们的安全性依旧无法保证。
四、非对称加密
常见的代表i:RSA,ECC,国密的 SM2
非对称加密的意思就是,生成一个公钥,一个私钥,然后有两种用法,分别是:
公钥去加密,私钥去解密 | 私钥去加密,公钥去解密 ,但是一般来说我们都是通过公钥去加密,私钥去解密的方式,但是,非对称加密的算法在性能上,差一点,加密的数量没有对称加密快。
五、加盐?是密码不够咸吗?
大家可以看下面这段代码,在使用md5加密的时候其中传入了一段salt的字符串对象,那这串字符串在加密过程中又扮演着什么角色呢?
有时候在使用摘要算法比如 md5,我们光加密 123456,那么加密的结果都是一样的,如果是一个破解md5的密码库里正好有这个 md5密码,那就很容易知道逆向后的密码是 123456。但是我怕们需要保证数据的安全性,这时候来一手加盐。盐是代表一串自定义的字符串,在加密时通过他来与原密码结合进行一波二次加密。这样加密后获取到的密文就很难破解出来。