Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption 使用非对称加密的JWT_Encryption_Jwt_Rsa_Encryption Asymmetric - Fatal编程技术网

Encryption 使用非对称加密的JWT

Encryption 使用非对称加密的JWT,encryption,jwt,rsa,encryption-asymmetric,Encryption,Jwt,Rsa,Encryption Asymmetric,我想问一个问题,在使用非对称加密时,我们使用客户机的公钥加密数据,这样客户机就可以使用他们的私钥解密数据,对吗 我刚刚找到了使用RSA对JWT进行签名的教程,但我发现它们使用服务器私钥而不是客户机的公钥加密数据,并且服务器的公钥在客户机之间共享 安全吗?因为如果公钥因为可共享而落入坏人之手,那么每个人都可以正确解密 那么,这样签署jwt可以吗 参考资料: 所以客户端可以使用他们的私钥解密数据,对吗 是的,在加密数据的情况下,这是正常的方式 但是在JWTs的情况下,它不是关于加密只有接收者应该解

我想问一个问题,在使用非对称加密时,我们使用客户机的公钥加密数据,这样客户机就可以使用他们的私钥解密数据,对吗

我刚刚找到了使用RSA对JWT进行签名的教程,但我发现它们使用服务器私钥而不是客户机的公钥加密数据,并且服务器的公钥在客户机之间共享

安全吗?因为如果公钥因为可共享而落入坏人之手,那么每个人都可以正确解密

那么,这样签署jwt可以吗

参考资料:

所以客户端可以使用他们的私钥解密数据,对吗

是的,在加密数据的情况下,这是正常的方式

但是在JWTs的情况下,它不是关于加密只有接收者应该解密的东西,而是关于对令牌进行签名

目标是,只有一个实例(例如身份验证服务器或令牌颁发者)可以对令牌进行签名,但每个人都可以使用公钥验证签名

因为如果公钥因为可共享而落入坏人之手,那么每个人都可以正确解密

公钥不能落入坏人之手,因为它是公开的。因此,根据定义,每个人都可以看到它

令牌的内容(即有效负载)未加密,而只是base64url编码,并且可以由everone读取,例如在上

那么,这样签署jwt可以吗


在这种情况下,目的不是加密数据,使其他人无法读取(“保密”),而是对数据进行签名,以便使用公钥的其他人可以验证您是否拥有私钥,以及您是否实际签署了数据。本例中的数据是JWT头和有效负载的散列。私钥用于签名,因此只有一个实体(身份验证服务器)可以对JWTs进行签名。公钥用于签名验证,因此使用公钥的任何第三方都可以验证JWT。公钥不能用于创建有效的签名


所以是的,它是安全的

谢谢,你的回答很有帮助!谢谢,你的回答很有帮助!不要将RSA解密与RSA签名混淆,事实并非如此。RSA签名需要特殊的填充,如RSA-PSS。类似地,RSA加密也需要像PKCS#1 v1.5或RSA-OAEP这样的填充。如果没有适当的填充,则决不能使用RSA。