1

我有一个这样的 pem 格式的 RSA 公钥,我想将它转换为 JSON Web 密钥。

RSA:

-----BEGIN PUBLIC KEY-----

 MIGfMA0GCSqGSIb3DQEBAQUBB4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0
 FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/
 3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQAB

-----END PUBLIC KEY-----

JWK:

{"keys":[{"kty":"RSA","kid":"201","use":"sig","alg":"RS256","n":"gslsSwlsweQKOG5sHLJEZ8-
_cWBTiMhuEc59ETC1raGKRmjYcp2UQulzyHC5it30JEfITQGScDeRefNw9pdsG2CEM0wBqji8ib_HEbVm1JjQZNqHxv4
2I6LeK2O2qaDcePcM9DlpAuprnJndhElk0NuRO_Q6vl8WQT7g1TlSxLWxcUgyuK8YmYNThgSkX9Y47oCDX3bFkH60YG6c4IcWHJPRKb
X5rgnTe8hGflfR3k","e":"AQAB"}]}

我找不到在 Go 中成功完成它的方法。

4

1 回答 1

0

这里是:

   pubKey, err := ioutil.ReadFile("pathToPublicKey")
    if err != nil {
        log.Printf("key not found", err)
        return err
    }

    pubPem, _ := pem.Decode(pubKey)

    pub, _ := x509.ParsePKCS1PrivateKey(pubPem.Bytes)

    set, err := jwk.New(pub)
    if err != nil {
        log.Printf("failed to convert to JWK: %s", err)
        return err
    }

    err = jwk.AssignKeyID(set)
    if err != nil {
        log.Printf("failed to assign kid: %s", err)
        return err
    }

我使用了这个包:godoc.org/github.com/lestrrat/go-jwx/jwk

于 2020-05-20T14:05:55.790 回答