一、介绍
在Verilog中的置换处理,为将一个数据的数据位按照某种规则进行重新排列。
以DES算法的初始置换为例
初始置换将64比特的明文,按照初始置换表进行置换,得到一个乱序的64bit明文组。
初始置换表如下:

第一个数58表示,将明文M的第58位放置在第1位。
二、脚本
- config.txt文件
data 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32- 第一行为变量的名称
- 接下来的行为置换表的内容
- main.py
def get_varinfo(config_path:str)->[str,[]]: f = open(config_path,"r") varname = f.readline().strip() varidxs = [] for line in f.readlines(): for idx in line.split(): varidxs.append(int(idx.strip())) f.close() return [varname,varidxs] def output_expression(varname:str,varidxs:[int],linenum=8,databit=2)->None: print("{") for idx in range(len(varidxs)-1): print(("{}[{:"+str(databit)+"}],").format(varname,varidxs[idx]),end=' ') if (idx+1)%linenum == 0 : print("") print(("{}[{:"+str(databit)+"}]").format(varname,varidxs[len(varidxs)-1])) print("};") def main(): varname , varidxs = get_varinfo("./config.txt") output_expression(varname,varidxs) if __name__ == "__main__": main()
本文介绍了在Verilog中如何使用初始置换处理数据,以DES算法为例,通过config.txt文件中的置换表对64位明文进行操作。脚本定义了get_varinfo函数读取配置文件,output_expression函数用于生成表达式输出指定位置的变量值。
2万+

被折叠的 条评论
为什么被折叠?



