大二下学期写了好几个《密码学》的实验,在其中有自己创造了一些函数,也有一些是从书本上面看来的
特此写一篇blog记录一下,日后要是还会用到这些东西,可以直接从这里拿,不用自己再重新写一遍了
用了一个叫做sage的语言包(其实应该说是python下的一个库吧,因为语法都和py是一致的,只是文件后缀是*.sage)
1.在实现AES算法中用到的有限域结构GF(2^8)
F.<a> = GF(256)
R.<x> = GF(2)[]
F = GF(2).extension(x^8+x^4+x^3+x+1,'a')
a = F.gen()
2.AES算法里面的state:这是一个4*4的二位数组,每个元素是一个字节长度的16进制表示如:'12','a3'
3.AES算法中 state 与 16进制的str相互转化的函数
def hex2state(hex_str):
state = []
for i in range(4):
state.append(4*['00'])
for j in range(4):
for i in range(4):
temp = hex_str[8*j+2*i:8*j+2*i+2]
state[i][j] = temp
return state
def state2hex(state):
hex_str = ''
for j in range(4):
fo