gpt4 book ai didi

c++ - CRYPT_INTEGER_BLOB 到十进制字符串

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:17 24 4
gpt4 key购买 nike

如何转换 CERT_INFO 的序列号成员最好使用 C/C++ 将结构转换为以 10 为基数的字符串表示形式

序列号是CRYPT_INTEGER_BLOB with 包含两个成员长度和一个字节数组。

对于 SerialNumber 有最大值的情况,如果 8 个字节很容易将字节复制到 long long,然后使用标准的 ostream 运算符将其转换为基数为 10 的字符串,但不确定我该如何处理序列号包含超过 8 个字节的情况,根据 X509 规范,CA 最多应处理 20 个字节。

最佳答案

如果效率不是问题,您可以使用双整数实现(例如这个:https://mattmccutchen.net/bigint/)并通过执行以下操作从字节数组构建整数:

void print_dec(const char *byte_array, const size_t len)
{
BigInteger a = 0;

for (int i = 0; i < len; i++) {
const char &byte = byte_array[i];

for (int bit = 7; bit >= 0; bit--) {
a = a*2 + ((byte >> bit) & 0x01);
}
}

std::cout << a << '\n' << std::endl;
}

(此代码未经测试)

关于c++ - CRYPT_INTEGER_BLOB 到十进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24204226/

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