如何验证 public 密钥是否匹配私钥签名?

How to verify if a public key matched private key signature?

如何验证 public 密钥是否与私钥匹配?

应用程序启动时,会从 base64 PEM 编码字符串加载 2048 位 RSA 密钥。我希望在继续之前验证密钥是否有效并且它们是否匹配。签名和验证由我正在使用的下划线库完成。

我可以签署和验证虚拟数据,但我正在寻找替代解决方案。

初学者游乐场:https://play.golang.org/p/tsB8Yp-xs47

解决方法很简单

func verifyKeyPair(private, public string) bool {
    // Handle errors here
    block, _ := pem.Decode([]byte(rsaPrivateKey))
    key, _ := x509.ParsePKCS1PrivateKey(block.Bytes)
    pubBlock, _ := pem.Decode([]byte(rsaPublicKey))
    pubKey, _ := x509.ParsePKIXPublicKey(pubBlock.Bytes)
    return key.PublicKey.Equal(pubKey)
}

https://play.golang.org/p/tR6Ns0wDrlN