You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAGE中GF(256)乘法d4*02计算结果与预期不符问题求解

问题原因

你在创建GF(256)有限域时没有指定AES MixColumns操作对应的不可约多项式,Sage默认的GF(256)本原多项式和AES规范所用的多项式不一致,导致最终模运算结果不符合预期。

AES规范中GF(256)使用的不可约多项式为:x^8 + x^4 + x^3 + x + 1,而Sage默认的GF(256)本原多项式为x^8 + x^4 + x^3 + x^2 + 1,二者模运算的结果存在差异。

正确实现代码
# 先定义二元多项式环,指定AES所用的不可约多项式
R.<x> = PolynomialRing(GF(2))
aes_modulus = x^8 + x^4 + x^3 + x + 1
k.<a> = GF(256, modulus=aes_modulus, repr='int')

# d4对应二进制11010100 = a^7 + a^6 + a^4 + a^2
d4 = a^7 + a^6 + a^4 + a^2
# 02对应a,执行乘法
result = d4 * a

print(result) # 输出179
print(bin(result)) # 输出0b10110011,和预期二进制结果完全匹配
补充说明

你之前输出的181是使用Sage默认本原多项式计算得到的结果,只要手动指定AES对应的模多项式即可得到正确结果。

内容的提问来源于stack exchange,提问作者Juan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:15:05