为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang中使用N=和E=解析公钥?

如何在golang中使用N=和E=解析公钥?

Go
肥皂起泡泡 2022-06-01 15:08:33
我有一个mbedtls 生成的RSA 公钥,它是在我需要在 Golang 中解析的嵌入式设备上创建的。我的密钥不是 pem 格式,只包含模数和指数,如下所示:N = 9C99AB1DC1462220A628D19BB6C6627FDCCC208FD9F93722F44515F5086F3312D3EFE256A11789F1F7F9A114B879A2DE0005FAE99A68321DD821CE589D1F6E0DE = 010001我相信我可以自己解析这个,但是因为你不应该实现自己的加密方法,而且 Golang 有一套非常完整的功能,我能做些什么来创建一个rsa.PublicKey呢?我可以生成一个 PEM 密钥,但这似乎是一个很大的浪费
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

解析自己的输入并没有错,我不会称其为“重新实现加密原语”。


要获取公钥,只需将模数解析为一个大整数:


bigN.SetString("9C99AB1DC1462220A628D...", 16)

然后创建自己的rsa.PublicKey.


操场上的完整示例:


N := "9C99AB1DC1462220A628D19BB6C6627FDCCC208FD9F93722F44515F5086F3312D3EFE256A11789F1F7F9A114B879A2DE0005FAE99A68321DD821CE589D1F6E0D"

E := 010001

bigN := new(big.Int)

_, ok := bigN.SetString(N, 16)

if !ok {

    panic("failed to parse")

}

pub := rsa.PublicKey{

    N: bigN,

    E: E,

}

fmt.Println(pub)


查看完整回答
反对 回复 2022-06-01
  • 1 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号