如何将 ASN.1 的大整数(public 键)INTEGER 放入结构的小 int64 中?
How can I fit large integer (public key) INTEGER of ASN.1 into small int64 of struct?
我必须表示 (ASN.1/DER SEQUENCE) 伪代码:
SEQUENCE ::= {
INTEGER
SEQUENCE {...}
...
}
其中 INTEGER 应该是 PUBLIC KEY
就 Golang 结构而言,我到目前为止 伪代码:
type ... struct {
num int64,
...
}
但是在编译时,出现运行时错误,说:
panic: asn1: structure error: integer too large
我明白了,这个问题是将 LARGE PUBLIC KEY 放入 small int64 中,我应该如何解决这个问题? 当我将 num int64 更改为 num []int64 时,我收到另一个错误,说类型不匹配(这也有道理,因为是 INTEGER现在是序列)...
所以,再一次,你如何将 PUBLIC KEY INTEGER 放入 Golang 或任何其他程序的 int 中。朗?
ASN.1 不限制 INTEGER 的大小,这是使用 INTEGER 表示大 public 键的原因之一。多种编程语言都有“Big.INT”表示法,可用于处理如此大的整数。一些商业 ASN.1 工具有一个替代表示,用于处理目标语言中的此类大整数,例如 C 或 C++,它们没有 Big INT 表示。在您的情况下, int64 不足以处理 public 长度超过 128 位的密钥整数。您将需要确定您的 ASN.1 工具如何处理大整数,或者您可以考虑使用支持大整数的 ASN.1 工具。
我认为这可以帮助您:(查看答案)
评论注意事项:
Go Big.Int 不是 asn1 序列(asn1 是不可知的,这取决于您或您用来定义如何将 asn1 INTEGER 映射到您可以使用的东西的工具)
我必须表示 (ASN.1/DER SEQUENCE) 伪代码:
SEQUENCE ::= {
INTEGER
SEQUENCE {...}
...
}
其中 INTEGER 应该是 PUBLIC KEY
就 Golang 结构而言,我到目前为止 伪代码:
type ... struct {
num int64,
...
}
但是在编译时,出现运行时错误,说:
panic: asn1: structure error: integer too large
我明白了,这个问题是将 LARGE PUBLIC KEY 放入 small int64 中,我应该如何解决这个问题? 当我将 num int64 更改为 num []int64 时,我收到另一个错误,说类型不匹配(这也有道理,因为是 INTEGER现在是序列)...
所以,再一次,你如何将 PUBLIC KEY INTEGER 放入 Golang 或任何其他程序的 int 中。朗?
ASN.1 不限制 INTEGER 的大小,这是使用 INTEGER 表示大 public 键的原因之一。多种编程语言都有“Big.INT”表示法,可用于处理如此大的整数。一些商业 ASN.1 工具有一个替代表示,用于处理目标语言中的此类大整数,例如 C 或 C++,它们没有 Big INT 表示。在您的情况下, int64 不足以处理 public 长度超过 128 位的密钥整数。您将需要确定您的 ASN.1 工具如何处理大整数,或者您可以考虑使用支持大整数的 ASN.1 工具。
我认为这可以帮助您:
评论注意事项: Go Big.Int 不是 asn1 序列(asn1 是不可知的,这取决于您或您用来定义如何将 asn1 INTEGER 映射到您可以使用的东西的工具)