首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >声明类型*big.Int溢出常量

声明类型*big.Int溢出常量
EN

Stack Overflow用户
提问于 2016-05-28 17:50:36
回答 2查看 3.1K关注 0票数 1

使用crypto/rsa包生成键区很简单,但是自己声明它很痛苦。

我试图声明一个类型为rsa.PublicKey的变量,该变量定义为:

代码语言:javascript
复制
type PublicKey struct {
        N *big.Int // modulus
        E int      // public exponent
}

我已经尝试过103种方法,但我的代码目前看起来如下:

代码语言:javascript
复制
PublicKey := new(rsa.PublicKey)

PublicKey.N = 816296297763124917516388440338759500423535395290623239231731567955308683122890408110917894172120047293936355563865250296188045077627313515614945465389856882915690164742049821466713295090362914686221827012330520911241180940331170800129566133563943306086709509374426793735798983196271063876215936717347200817820685489907456621846519078704338901417077754153251584919148131668369473222078960469749879767829241702858598298315759777245767370065542249841401685747514693845945420663931515035586797756896017462499826100826469085345198490755785708882569397123671313993933597159332140624225622926365258472081852103795720495728779491860405409429756519754432759030127289255409541378096471189783136441306888685144178712329637014132885623358066824356187044819578205172698506597932578231190886063535262514544569054747443504586895362356519252402500104155389876467086444850150261677007183689594568339805440756958346151465691221654766132846717117978938197863452998630570321897641091974200100764524637808876854013287571133384735164135339783262769321526997252096927500094807456840263828514476848496064212933462545940124330314474126636272733109787671957872657823289210871868354885730638093964892263227561606744192311648252923260065974092128743259979645799

PublicKey.E = 65537

我知道这个错误:

代码语言:javascript
复制
./main.go:21: constant too large: 816296297763124917516388440338759500423535395290623239231731567955308683122890408110917894172120047293936355563865250296188045077627313515614945465389856882915690164742049821466713295090362914686221827012330520911241180940331170800129566133563943306086709509374426793735798983196271063876215936717347200817820685489907456621846519078704338901417077754153251584919148131668369473222078960469749879767829241702858598298315759777245767370065542249841401685747514693845945420663931515035586797756896017462499826100826469085345198490755785708882569397123671313993933597159332140624225622926365258472081852103795720495728779491860405409429756519754432759030127289255409541378096471189783136441306888685144178712329637014132885623358066824356187044819578205172698506597932578231190886063535262514544569054747443504586895362356519252402500104155389876467086444850150261677007183689594568339805440756958346151465691221654766132846717117978938197863452998630570321897641091974200100764524637808876854013287571133384735164135339783262769321526997252096927500094807456840263828514476848496064212933462545940124330314474126636272733109787671957872657823289210871868354885730638093964892263227561606744192311648252923260065974092128743259979645799
./main.go:21: overflow in constant
./main.go:21: cannot use 0 (type int) as type *big.Int in assignment

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-29 06:23:15

T. Claverie的答案将创建一个公钥,但不会将模数(PublicKey.N)设置为您看到的数字。相反,它将使用这些数字的字符代码。

代码语言:javascript
复制
fmt.Print([]byte("1"))
[49]

您可以使用big.Int.UnmarshalText()获取输入字符串中看到的键。

代码语言:javascript
复制
PublicKey := new(rsa.PublicKey)
PublicKey.N = big.NewInt(0)
PublicKey.N.UnmarshalText([]byte("8162962977631249175163884403387595004235353952981629629776312491751638844033875950042353539529"))

您可以在这里看到区别:https://play.golang.org/p/HL6YNdcSubv

票数 7
EN

Stack Overflow用户

发布于 2016-05-28 18:24:05

问题是Go将您的文字值解释为int。但是,它并不是真正适合32位,所以它失败了。但是,您可以在big.Int创建后设置它的值:

代码语言:javascript
复制
PublicKey.N = big.NewInt(0)
PublicKey.N.SetBytes([]byte("8162962977631249175163884403387595004235353952981629629776312491751638844033875950042353539529"))
fmt.Println(N)
// 8162962977631249175163884403387595004235353952981629629776312491751638844033875950042353539529
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37502134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档