在C中操作80位数据类型

gam*_*erx 8 c cryptography rotation bit-shift fpga

我在C中实现了一些涉及80位密钥的加密算法.特定操作涉及旋转移位键x位数.

我已经尝试过long double类型,如果我没有错,那就是80位,但这对于bitshift运算符不起作用.

我能想到的唯一选择是使用10元素char数组和一些复杂的循环和if-else.

我的问题是,是否有一些简单而有效的方法来实现这一目标.

谢谢.

Ben*_*Ben 4

遗憾的是你需要一个 bignum 库。虽然 C 本机数据类型支持 80 位浮点数,但它实际上并不能满足您的要求。

可以链接诸如GMP之类的东西,甚至可以使用不太理想的方法,例如 10 个字符数组或长和短的两个数字(64 位和 16 位整数)。

两者都不是特别漂亮,但它们确实有效,如果您打算将其用于除课程以外的其他用途,那么GMP是您的最佳选择。否则,你最终可能会遇到一团乱七八糟的定时攻击,你可以围绕这些攻击进行编码,但它可能会变得非常令人讨厌、非常快。

  • 当你有 FPGA 时,为什么还要用 C 语言实现这个? (2认同)