登录
首页 >  Golang >  Go问答

将 ASN.1 的大整数(公钥)INTEGER 压缩成小 int64 的结构化方法是什么?

来源:stackoverflow

时间:2024-02-10 19:45:23 266浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《将 ASN.1 的大整数(公钥)INTEGER 压缩成小 int64 的结构化方法是什么?》,聊聊,我们一起来看看吧!

问题内容

我必须表示(asn.1/der sequence)伪代码

sequence ::= {
      integer
      sequence {...}
      ...
}

其中integer应该是公钥

就 golang 结构而言,到目前为止我有伪代码

type ... struct {
      num int64,
      ...
}

但是编译时,我遇到运行时错误,说:

panic: asn1: structure error: integer too large

我明白,问题在于将大公钥放入小 int64 中,我应该如何克服这个问题?当我更改 num int64num []int64 我收到了另一个错误,说类型不匹配(这也有意义,因为以前是 integer,现在是 sequence)...

那么,再一次,如何将 public key integer 放入 golang 或任何其他 prog 的 int 中。郎?


正确答案


我认为这可以帮助您:Why is unmarshalling of a DER ASN.1 large integer limited to SEQUENCE in Golang?(查看答案)

请注意您的评论: Go Big.Int 不是一个 asn1 序列(asn1 是不可知的,它取决于您或您使用的工具来定义如何将 asn1 INTEGER 映射到您可以使用的东西)

ASN.1 不是对 INTEGER 的大小进行限制,这是使用 INTEGER 表示大型公钥的原因之一。多种编程语言都有“Big.INT”表示形式,可用于处理如此大的整数。一些商业 ASN.1 工具有一种替代表示法,用于在没有 Big INT 表示法的目标语言(例如 C 或 C++)中处理如此大的整数。在您的情况下,int64 不足以处理长度可能超过 128 位的公钥整数。您需要确定 ASN.1 工具如何处理大整数,或者您可以考虑使用支持大整数的 ASN.1 工具。

到这里,我们也就讲完了《将 ASN.1 的大整数(公钥)INTEGER 压缩成小 int64 的结构化方法是什么?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>