作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 mbedtls-generated RSA 公钥,在我需要在 Golang 中解析的嵌入式设备上创建。我的 key 不是 pem 格式,只包含模数和指数,如下所示:
N = 9C99AB1DC1462220A628D19BB6C6627FDCCC208FD9F93722F44515F5086F3312D3EFE256A11789F1F7F9A114B879A2DE0005FAE99A68321DD821CE589D1F6E0D
E = 010001
我确信我可以自己解析它,但是由于您永远不应该实现自己的加密方法并且 Golang 具有非常完整的功能套件,我可以做些什么来创建 rsa.PublicKey从这个?
我可以生成一个 PEM key ,但这似乎是一个很大的浪费
谢谢
最佳答案
解析您自己的输入没有任何问题,我不会称之为“重新实现加密原语”。
要获取公钥,只需将模数解析为一个大整数即可:
bigN.SetString("9C99AB1DC1462220A628D...", 16)
然后创建您自己的 rsa.PublicKey
。
playground 中的完整示例:
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)
关于go - 如何在golang中使用N=和E=解析公钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61475522/
我是一名优秀的程序员,十分优秀!