现代64位处理器通常如何处理128位/ 256位加密?

时间:2019-03-11 17:41:34

标签: encryption cpu-registers processor

根据我的经验,对我来说,这意味着一台64位计算机将具有一个64位寄存器,但是如果是这样,一个人如何处理需要等128位密钥或更多密钥才能进行的加密等操作,或者其他一些需要比处理器寄存器能够处理的位数更高的操作?

1 个答案:

答案 0 :(得分:1)

阅读此Q/A,了解如何处理任意大小(无符号)的整数。

但是,对于大小的2到4倍,更可能具有更简单的组合。例如,对于128位(模块化)加法Z = X + Y (mod 2^128)

  1. lowZ = lowX + lowY (mod 2 ^ 64);
  2. lowC = lowZ < lowX ? 1 : 0(换句话说:如果进位额不是直接可用的,则需要计算);
  3. hiZ = hiX + hiY + lowC(mod 2 ^ 64);
  4. hiC = hiZ < hiX ? 1 : 0(但通常只是将进位舍弃)。

lowXlowYlowZ只是值XYZ的64个最低有效位。那么hiXhiYhiZ只是值XYZ的64个最高有效位。

您也可以对其他操作执行此操作。位操作,移位等操作非常简单。乘法更难,除法/余数是母狗。我怎么知道?好吧,here is an example of 32 bit calculations for Java Card, a system that basically assumes 16 bit operations。因为Java不使用无符号计算,所以这样的编程比较难。

很有趣,Java Card本身通常在8位CPU上运行(尽管这种情况正在迅速改变)。因此,实际上,正在进行8位到16位和16位到32位的双重转换。 8位处理器体系结构足够合适,是袖珍计算器中使用的CPU的直接前身。自从IT诞生之初甚至可能更早就知道这种转换。