首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAGE中GF(256)的乘法

SAGE中GF(256)的乘法
EN

Stack Overflow用户
提问于 2021-10-28 13:34:11
回答 1查看 154关注 0票数 0

我试图在这个question的GF(256)上复制乘法。具体来说,我试着在圣贤大学学习d4*02。根据作者的说法,这种乘法是。在鼠尾草里我试过

代码语言:javascript
复制
 k.<a> = FiniteField(256, impl='givaro', repr='int')
 print(k((a**2+a**4+a**6+a**7)*(a))) # a**2+a**4+a**6+a**7 is d4 and a is 2
 181

但181并不等于。我做错什么了?你能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-19 15:04:36

您需要为Rijndael给出有限域构造器的正确模数。

代码语言:javascript
复制
# Rijndael finite field
k.<a> = GF(2^8, modulus=x^8+x^4+x^3+x+1)

r = (a^7 + a^6 + a^4 + a^2) * a
v = r.integer_representation()
print(r, v, hex(v))

输出

代码语言:javascript
复制
a^7 + a^5 + a^4 + a + 1 179 0xb3

使用整数指定字段元素通常更方便。例如,

代码语言:javascript
复制
# Rijndael finite field
k.<a> = GF(2^8, modulus=x^8+x^4+x^3+x+1)

kint = k._cache.fetch_int
p, q = [kint(u) for u in (0xd4, 0x02)]
r = p * q 
v = r.integer_representation()
print(r, v, hex(v))

或者,您可以使用list和dict来将整数与字段元素相互转换。下面的代码执行链接问题的第二个乘法。

代码语言:javascript
复制
# Rijndael finite field
k.<a> = GF(2^8, modulus=x^8+x^4+x^3+x+1)

i2f = sorted(k)
f2i = {v: i for i, v in enumerate(i2f)}

p, q = [i2f[u] for u in (0xbf, 0x03)]
print(p)
print(q)

r = p * q 
v = f2i[r]
print(r, v, hex(v))

输出

代码语言:javascript
复制
a^7 + a^5 + a^4 + a^3 + a^2 + a + 1
a + 1
a^7 + a^6 + a^4 + a^3 + a 218 0xda
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69755079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档