数字签名
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接受者。接受者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对接收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输的过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。数字签名是一个加密的过程,数字签名验证是一个解密的过程。
JWT(Java web Token)
JWT本身是为了解决服务端的token存储的问题,为了避免服务端存储大量的token,服务端可以采用只验证不存储的方式。JWT本身包括三部分内容:JWT头(哈希算法) + 有效载荷(JWT签发放,接收方,用户登陆信息)+ 服务端使用私钥对JWT头和有效载荷的两部分的哈希结果再加密也就得到了数字签名。
然后将整体进行发送给客户端,之后客户端再重传回来,服务端就可以重新对JWT头和有效载荷进行签名与收到的签名对比,从而实现验证。
我们可以看到JWT是自己签名并且自己验证,所以不存在普通数据签名模式下的公钥解密过程。