如何判断你是否拥有 JWS 或 JWE

来自 JSON Web 加密规范(RFC 7516)的第 9 节:

通过检查 alg(算法)标头参数值,可以将 JWS 的 JOSE 标头与 JWE 的 JOSE 标头区分开来。如果值表示数字签名或 MAC 算法,或者值是,则表示 JWS; 如果它代表密钥加密,密钥包装,直接密钥协议,密钥包装密钥协议或直接加密算法,则它适用于 JWE。 (在使用 JWS Compact Serialization 或 JWE Compact Serialization 时,提取要检查的 alg 值很简单,使用 JWS JSON 序列化或 JWE JSON 序列化时可能会更困难。)

通过确定是否存在 enc(加密算法)成员,还可以将 JWS 的 JOSE 标头与 JWE 标头区分开来。如果 enc 成员存在,则它是 JWE; 否则,它是一个 JWS。

JWS(签名)##

{
  "alg": "HS256"
}

JWE(加密)

{
  "alg":"RSA1_5",
  "enc":"A256GCM",
  "iv":"__79_Pv6-fg",
  "x5t":"7noOPq-hJ1_hCnvWh6IeYI2w9Q0"
}