gpt4 book ai didi

Golang : Convert byte array to big. Int

转载 作者:IT王子 更新时间:2023-10-29 01:22:25 28 4
gpt4 key购买 nike

我正在尝试从存储在字节数组中的模数和指数创建 RSA 公钥。经过一些实验后,我得到了以下结果:

func bytes_to_int(b []byte) (acc uint64) {
length := len(b)
if length % 4 != 0 {
extra := (4 - length % 4)
b = append([]byte(strings.Repeat("\000", extra)), b...)
length += extra
}
var block uint32
for i := 0; i < length; i += 4 {
block = binary.BigEndian.Uint32(b[i:i+4])
acc = (acc << 32) + uint64(block)
}
return
}

func main() {
fmt.Println(bytes_to_int(data[:128]))
fmt.Println(bytes_to_int(data[128:]))
}

这似乎可行(尽管我不相信没有更好的方法)。我的下一步是将其转换为使用 math/big 以处理更大的数字。我可以看到一个 Lsh 函数来执行 << 但无法弄清楚如何递归地将 Uint32(block) 添加到 big.Int。

作为引用,我尝试导入的公钥是存储在 key 环 (pubring.mix) 中的 Mixmaster key : http://www.mixmin.net/draft-sassaman-mixmaster-XX.html#key-format http://pinger.mixmin.net/pubring.mix

最佳答案

你想要Int.SetBytes从一片 []byte 中创建一个 big.int

func (z *Int) SetBytes(buf []byte) *Int

SetBytesbuf 解释为大端无符号整数的字节,将 z 设置为该值,并返回 z

这在您的应用程序中使用起来应该非常简单,因为根据您链接的文档,您的 key 采用大端格式。

关于Golang : Convert byte array to big. Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757814/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com