#finite-fields #galois-field #field #finite #galois #fields #isochronous

no-std isochronous_finite_fields

GF(2^8)算术的等时实现

2个稳定版本

1.0.1 2022年8月26日
1.0.0 2020年2月9日

#908算法

MIT 许可证

13KB
151

等时有限域

此crate实现了在有限域上对有限域算术进行实现,有限域具有2^8个元素,通常表示为GF(2^8),采用等时方式。这意味着无论输入如何,它总是以相同的时间运行。

实现是等时的,因为它

  • 无分支
  • 以恒定时间运行
  • 不进行表查找

此crate使用不可约多项式x8 + x4 + x3 + x + 1进行乘法,这是在FIPS 197中为AES算法标准化的。

示例

// Add two elements of the Galois field GF(2^8) together.
assert_eq!(GF(5) + GF(12), GF(9));

// Subtract two elements of the Galois field GF(2^8).
assert_eq!(GF(32) - GF(219), GF(251));

// Multiply two elements of the Galois field GF(2^8) together.
assert_eq!(GF(175) * GF(47),  GF(83));

// Calculate the multiplicative inverse of GF(110) in the Galois field GF(2^8).
assert_eq!(GF(110).multiplicative_inverse(), GF(33));
assert_eq!(GF(110) * GF(33), GF(1));

许可证

本项目采用MIT许可证 - 请参阅LICENSE文件以获取详细信息。

无运行时依赖