【发布时间】:2022-08-23 21:16:42
【问题描述】:
- 当我使用 rsa pem 字符串时,以下代码可以正常工作,生成为 rsa 公钥对象并重新生成为 rsa pem 字符串
- 当我使用 dsa pem 字符串时,以下代码无法正常工作,只能生成到 dsa 公钥对象
x509:不支持的公钥类型:*dsa.PublicKey
我想知道如何使 dsa 公钥对象重新生成 dsa pem 字符串
这是我的代码
package main import ( \"C\" \"crypto/x509\" \"encoding/pem\" \"fmt\" \"os\" ) var rsaBytes = `-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyQubwvMR1ctRTTylCJ9u imYlIMo8rkOXV8S7NaRB2pdEoeG1RiGVanTKwu1N6D7CNbXV+o+QVOpSB823iTb+ kxHaTpGcJwVvA1K3pJOgSSAx3bbr8Ekv1FXNZ3bGFOrzoD0OOWICDGnNQznQ8cJ8 +EFwjLBoqqqWM892BkGQuQTRLEmjrFOrLlTB99yXMeiD4c2iQFCtNZHpFviS9ahp Irb/sEyhs2hFYqUUByZQQqo0ewv8MFiHGXG68t2LMnTkbff3KyUxgChEPiqAUNAb LJ1JaFwypZdHr7KyJqatCIOk2m1Yz3umnW/KsM0Q+N9C4UZdn6GbZyStELGBJjsv aQIDAQAB -----END PUBLIC KEY-----` var dsaBytes = `-----BEGIN PUBLIC KEY----- MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9E AMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f 6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv 8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtc NrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwky jMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/h WuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAIb9o0KPsjAdzjK571e1Mx7ZhEyJ GrcxHiN2sW8IztEbqrKKiMxpNlTwm234uBdtzVHE3uDWZpfHPMIRmwBjCYDFRowW WVRdhdFXZlpCyp1gMWqJ11dh3FI3+O43DevRSyyuLRVCNQ1J3iVgwY5ndRpZU7n6 y8DPH4/4EBT7KvnV -----END PUBLIC KEY-----` func main() { // pemBlock, _ := pem.Decode([]byte(rsaBytes)) pemBlock, _ := pem.Decode([]byte(dsaBytes)) pubInterface, err := x509.ParsePKIXPublicKey(pemBlock.Bytes) pubkeyByte, err := x509.MarshalPKIXPublicKey(pubInterface) if err != nil { fmt.Println(err) os.Exit(0) } block := &pem.Block{ Type: \"PUBLIC KEY\", Bytes: pubkeyByte, } pemByte := pem.EncodeToMemory(block) fmt.Println(string(pemByte)) }