我尝试使用golang进行一些简单的加密。
我有一个以base64编码的modulo和exponent形式的RSA公钥。 我想使用该值来实例化rsa.PublicKey struct。
将modulo base64字符串转换为big.Int对我来说非常简单。
出乎意料的是,我在尝试将base64字符串转换为简单的int(RSA密钥的指数部分)时遇到了很多麻烦。
我提出的最好的事情是:
package main
import (
"encoding/base64"
"fmt"
"math/big"
)
func main() {
e_data, _ := base64.RawURLEncoding.DecodeString("AQAB")
e_big := new(big.Int)
e_big.SetBytes(e_data)
e := int(e_big.Int64())
// Finally I have an int here to use it in rsa.PublicKey struct
fmt.Println(e)
}
有没有更好,更简单的方法将base64字符串转换为int?
答案 0 :(得分:0)
这似乎做到了:
package main
import (
"encoding/base64"
"encoding/binary"
)
func decode(s string) (uint32, error) {
a, e := base64.StdEncoding.DecodeString(s)
if e != nil { return 0, e }
return binary.LittleEndian.Uint32(append(a, 0)), nil
}
func main() {
n, e := decode("AQAB")
if e != nil {
panic(e)
}
println(n == 65537)
}