可以将数字签名和签名人的 public 密钥存储在 json 文件中吗?

Is it okay to store a digital signature and the public key of the signatory inside a json file?

在我的项目中,我用我的私钥签署了一个字符串。如果我将我的 public 密钥和签名存储在一个 json 文件中供稍后验证,那么它真的安全吗?还是首选 PKCS#7?如果是,那有什么区别?

是的。只要您的私钥保持未公开状态,将您的 public 密钥与由私钥签名的文档一起存储是安全的。

在联邦用户认证授权的SAML2.0系统中,他们使用的Assertion token是用私钥签名的。这些断言是 XML 文档,包含加密签名和 public 密钥。 public 密钥是该系统中 X.509 public 密钥的 base64 编码版本。

当然,收件人应该使用自己先前存储的 public 密钥副本来验证签名。如果收件人使用文档中的 public 密钥验证签名,则很容易受到欺骗。坏人可以使用自己的私钥签署恶意文档,并发送他们自己的 public 密钥。签名会匹配,但无法证明文档的来源。