2个稳定版本
1.0.1 | 2022年8月26日 |
---|---|
1.0.0 | 2020年2月9日 |
#908 在 算法
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文件以获取详细信息。