将base64字符串转换为int以便在Go中使用加密

时间:2018-02-13 22:23:16

标签: go

我尝试使用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?

1 个答案:

答案 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)
}

https://golang.org/pkg/encoding/binary