跳到主要内容

前端应该了解的密码知识

因为目前对于我们来说,登录,登录态,退出等等这些状态都是在node层中做的,前端所做的就是拿到登录态,然后做一些判断一些鉴权,这些都是从接口里获取的。但是之前有一个项目中是有登录态,和登录鉴权这些内容的。所以今天来说说有关密码方面的知识吧。

 1.密码、秘钥、口令的区别

其实对于大部分人来说,所谓的密码其实就是口令而已,就是我通过这个口令,来获取自己的登录态;密码还包含很多,包括私钥、公钥,对称加密,非对称加密等等。接下来就整理一些内容吧。 首先,先说下为什么要加密。这不是废话吗?当然是为了保证数据的安全了。对,那么既然是前端的知识,就从前端说起吧。 稍微有点负责任的网站登录的时候是必定要对密码进行加密处理的(那种在URL上明文传递密码的公司和网站应该一棍子打死,没有解释的余地),就是你打开开发者选项,然后看请求里的内容,密码是必定加密过的,应该是一堆没有可读性的乱码,加密规则有很多种sha1、sha256等等很多(其实我也就记起来这两种了),加密规则中还可以指定用不同的规则去加密、解密,这样保证了数据传输中的保密性——即使你的网站被监听了,传输被截获到了,他也无法获取你的密码(当然,实际情况中可能没有这么简单,目前就按照比较简单的方式去说明)。当服务端获取到这些内容之后,有两种处理方式,一种就是我在按照一定的格式转换,然后把这些存起来,并且和已有的密码做对比,如果正确那就登录成功,失败就是账号密码不匹配;另一中方式就是我按照加密的规则在解密,把解密后的密码与数据库密码对比,成功则登录成功,这些是一些比较简单的流程说明,当然,时间情况中有很多复杂的情况需要考虑,比如说多种账号都可以登录,然后这些账号的登录的隔离,不通tab里的登录态的同步情况,这些都有很多的情况去考虑。

2.公钥、私钥、对称加密、非对称加密

密码学刚兴起的时候就可以说是对称加密——加密解密的方式已一样的,我用什么方式加密,就用相反的方式去解密。举个简单的例子,我对family加密,每个字母向后移动三位即idplob,在这里我们规定到z之后就从a开始,然后当我拿到这个内容之后把所有的位数向前移动三位,就可以得到解码前的内容。 当然,这只是最简单的解释方式,其实对称加密也是有很多种算法的,对称加密中没有公钥私钥的概念,只有一个秘钥,也就是加密解密的方式。 接下来就是非对称加密,非对称加密是加密和解密的方式是不一样的,这里有个公钥,有个私钥,公钥是可以公开的,让任何人知道都无所谓,有的地方需要验证你的公钥去证明你的身份,比如git上,可以设置一个自己的账号公钥,就可以不需要提交代码的时候在去验证用户名和邮箱密码之类的东西了。 在这里贴一下非对称加密的定义吧:

公开密钥加密(英语:public-key cryptography,又译为公开密钥加密),也称为非对称加密(asymmetric cryptography),一种密码学算法类型,在这种密码学方法中,需要一对密钥(其实这里密钥说法不好,就是“钥”),一个是私人密钥,另一个则是公开密钥。这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。

其实就是我发送内容的时候通过公钥加密,然后指定接收人,这样只有我指定人的私钥可以解密,这样保证了某个人的私钥被破解,但是别人的私钥还是安全的。 我记得我刚开始看这些的时候是有一个图的,有图会比较能更直观的看出来这些问题,仅仅是描述有时候不是很直观。但是地址找不到了。 这些加密方法都有比较成熟的库,比如sha256的:https://www.npmjs.com/package/js-sha256

Loading Comments...