如何确定加密消息是由我发送的?

How make sure that an encrypted message was sent by me?

好的,假设我将使用 RSA 算法用我的私钥加密的消息发送给某人,此人将 return 我发送的相同加密消息。如果我向他发送消息 Hey 而他 return 有事,我是否需要知道我发送给他的消息是 Hey 才能知道他 return 发给我的消息是我发的吗?

这就是不理解 JSON 网络令牌之类的东西的原因。如果rest server需要是无状态的,怎么确定请求头中的beaver token是它的私钥生成的?

Ok, let's suppose i will send a message encrypted with my private key using the RSA algorithm to someone

使用 RSA,您可以使用收件人的 public 密钥加密邮件。收件人可以使用其私钥解密邮件。

私钥可用于对消息进行签名,因此收件人可以使用 public 密钥

验证签名

did i need to know the message i sent him was Hey to know the message he returned my was sent by me?

如果邮件已签名,则您可以验证签名。

If a rest server needs to be stateless, how can it be sure that the beaver token in the header of the request is generated by it private key?

根据我假设您想问的问题 - 您如何验证令牌是由可信方(服务器本身或可信身份提供者)颁发的?

JWT 令牌有 3 个部分。 Header、负载和签名。

有效负载也可以加密,但在此上下文中并不重要。完整的规格可以在 RFC.

中找到

令牌发行者使用其私钥对有效载荷进行签名。发行者可以是服务器本身,也可以是其他受信任的提供者。

服务器需要发行者的 public 密钥来验证票证的签名。无状态休息服务仅验证令牌的签名(它还需要验证发行者和过期时间)并且签名有效或无效。然后,其余服务可以信任令牌中提供的信息,而无需保留有效负载本身)。