在C中操作80位数据类型

时间:2012-03-24 06:52:00

标签: c cryptography rotation fpga bit-shift

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

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

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

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

感谢。

2 个答案:

答案 0 :(得分:4)

可悲的是,你需要一个bignum图书馆。虽然C本机数据类型支持80位浮点数,但它实际上并不是您想要的。

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

两者都不是特别漂亮,但它们确实有效,如果您计划将其用于除课程之外的任何其他内容,GMP是可行的方法。否则你最终可能会遇到一大堆定时攻击,你可以编码,但它可能会变得非常讨厌,非常快。

答案 1 :(得分:4)

这里有点混乱。如果我理解正确,那么你在FPGA上使用“软”cpu。

  1. 传统上,人们使用FPGA通过VHDL / Verilog制作自己的移位寄存器。这些算法实现起来非常轻松,速度非常快。回到大学,我做的是加密项目。

  2. 此外,您提到的论文谈到了128位密钥。这会更容易实现吗?