用户登录

最简单的加密方法就是给数据设置一个密码,这样只要知道这个当初加密数据的时候用的密码,就可以解密数据了。这种加密的方法叫对称加密(Symmetric Encryption),就是加密解密使用同样的密码。

还有一种加密方法是非对称加密(Asymmetric Encryption),使用这种方法加密数据的时候,会用到一个密钥(Private Key)还有一个公钥(Public Key)。密钥与公钥之间存在某种联系,就是公钥是基于密钥制造出来的。使用密钥加密数据,再用对应的公钥可以解开加密的数据。使用公钥加密的数据,用跟它对应的密钥也可以解开加密的数据。

在服务端签发令牌的时候可以用密码的方法加密令牌,也可以用密钥还有公钥的方法加密要签发的令牌。在服务端,用一个特定的密码签发了一个令牌,把它交给客户端,下次客户端向服务端出示这个令牌的时候,服务端可以使用同样的密码去验证这个令牌的真实性。因为只有服务端自己知道当初签发令牌的时候设置的密码是什么,所以服务端可以判断出令牌的真实性。

用密码签发令牌会有个问题,就是任何知道这个密码的人都可以签发令牌。如果我们的服务端只是一个应用组成,使用这种密码加密的方法是可以的。但如果服务端是由很多个不同的应用组成,其中一些可能需要验证用户的身份,所以这些应用都得知道签发令牌的时候用的密码是什么。这样这些应用也就都有了签发令牌的权限,因为签发令牌只需要使用一个密码。

解决这个问题,我们可以使用密钥还有公钥来签发验证令牌。在有权限签发令牌的应用里,可以使用密钥签发令牌,然后把公钥分别交给需要验证令牌的地方,也就是需要验证用户身份的地方。在这些地方可以使用公钥来解密令牌,如果能解的开就说明这个令牌是用对应的密钥签发的。因为公钥还有密钥是成对的,公钥是基于密钥制造出来的。即使有人知道公钥是什么,他也没有办法制造出用密钥加密的数据,也就是他即使知道了公钥也不能伪造令牌。

签发令牌时用的加密方法《 Node.js 服务端应用开发:验证身份 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点