Ali*_*har 3 cryptography rsa go public-key mbedtls
我有一个mbedtls 生成的RSA 公钥,它是在我需要在 Golang 中解析的嵌入式设备上创建的。我的密钥不是 pem 格式,只包含模数和指数,如下所示:
N = 9C99AB1DC1462220A628D19BB6C6627FDCCC208FD9F93722F44515F5086F3312D3EFE256A11789F1F7F9A114B879A2DE0005FAE99A68321DD821CE589D1F6E0D
E = 010001
Run Code Online (Sandbox Code Playgroud)
我确信我可以自己解析这个,但是因为你应该永远不要实现你自己的加密方法,而且 Golang 有一套非常完整的功能,我该怎么做才能从中创建一个rsa.PublicKey呢?
我可以生成一个 PEM 密钥,但这似乎是一个很大的浪费
谢谢
解析您自己的输入并没有错,我不会称之为“重新实现加密原语”。
要获得公钥,只需将模数解析为一个大整数:
bigN.SetString("9C99AB1DC1462220A628D...", 16)
Run Code Online (Sandbox Code Playgroud)
然后创建自己的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)
Run Code Online (Sandbox Code Playgroud)