在实现密码学算法的时候用到的一些自创函数以及数据结构

这篇博客记录了作者在大二下学期密码学实验中自创的一些函数和数据结构,包括使用Sage语言包实现的有限域GF(2^8)、AES算法的4*4状态矩阵、状态与16进制字符串的转换、二进制与16进制字符串的转化、按位异或操作以及GF(2^8)与16进制字符串的相互转化,旨在为未来提供便利。
摘要由CSDN通过智能技术生成


大二下学期写了好几个《密码学》的实验,在其中有自己创造了一些函数,也有一些是从书本上面看来的

特此写一篇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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值