gpt4 book ai didi

c - 固定长度类型 > 64 in C

转载 作者:行者123 更新时间:2023-12-01 16:59:06 25 4
gpt4 key购买 nike

我目前正在用 C 编写一些加密代码,这些代码必须处理大于 uint64_t 能够容纳的数字。 (用于做HDCP认证,其中一个密码值为84位)

执行此操作的最佳方法是什么?我需要存储的变量之一是 84 位长——我应该为低 64 位取一个 uint64_t,为高 20 位取一个 uint32_t 吗?这对我来说似乎是一个 hack,但我不确定是否真的有更好的解决方案,尤其是对于存储在结构中。

理想的替代方法是声明自定义数据类型,如 uint64_t,但长度为 84 位,其行为方式相同。这可能吗?我不确定 libc 是否可以处理位宽不是 8 的倍数的变量,但 88 位类型可以用于此,尽管我什至不确定声明自定义位宽数据类型的可行性如何。

编辑:我检查了 uint128_t,但它似乎不存在于 clang 的 C99 模式中。我将对此进行标准算术和位运算,这是与加密代码相关的标准 shebang。

最佳答案

7 年前,我的密码学教授向我们介绍了 MIRACL开源库,其中包含非常快速的密码函数实现和处理大精度数字的工具。我已经很久没有使用它了,但它似乎仍然完好无损。如果您的问题只是精确地表示 84 位值而不是其他任何东西,那么这可能并不理想,但这可能是一个更通用的解决方案。

关于c - 固定长度类型 > 64 in C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548802/

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