资源描述:
《DES算法地verilog实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准文档EDA试验报告一、实验项目名称DES算法二、实验目的与要求1.掌握DES的原理和设计方法。2.了解QuartusII硬件电路设计流程,学会利用Modelsim进行仿真。3.加深对自顶向下设计和分模块化的了解,学会模块化的设计方法。三、实验步骤(一).DES算法原理DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,文案大全实用标准文档使得每个密钥都有奇数个1)分组后的明文组和56位的密
2、钥按位替代或交换的方法形成密文组的加密方法。其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,整个算法的主流程图如下:(二)、VerilogHDL实现原理文案大全实用标准文档拟采用模块化设计思想,根据DES算法的流程分模块设计实现各模块,自顶向下最终实现DE
3、S加密算法。各模块功能及实现如下所示:1.整体结构框架搭建,实现总体功能moduleDES(inputclk,inputdes_enable,inputreset,inputdes_mode,input[1:64]data_i,input[1:64]key_i,outputwire[1:64]data_o,outputready_o);wire[3:0]inter_num_curr;wire[1:32]R_i_var,L_i_var;wire[1:56]Key_i_var_out;wire[1:64]data_o_var_t;wire[1:32]R_i,L_i;wire[1:32]R_o
4、,L_o;wire[1:56]Key_o;wire[1:28]C0,D0;IPIP1(.in(data_i),.L_i_var(L_i_var),.R_i_var(R_i_var));文案大全实用标准文档IP_niIP_ni(.in(data_o_var_t),.out(data_o));pc_1pc_1(.key_i(key_i),.C0(C0),.D0(D0));//F(R,K)des_fdes_f1(.clk(clk),.reset(reset),.des_mode(des_mode),.inter_num_i(inter_num_curr),.R_i(R_i),.L_i(L_i)
5、,.Key_i(Key_i_var_out),.R_o(R_o),.L_o(L_o),.Key_o(Key_o));//contral16F(R,K)contrlcontrl1(.data_o_var_t(data_o_var_t),.inter_num_curr(inter_num_curr),.Key_i_var_out(Key_i_var_out),.R_i(R_i),.L_i(L_i),.ready_o(ready_o),.L_o(L_o),.R_o(R_o),.R_i_var(R_i_var),.L_i_var(L_i_var),.Key_o(Key_o),文案大全实用标准文档
6、.C0(C0),.D0(D0),.clk(clk),.reset(reset),.des_enable(des_enable));endmodule文案大全实用标准文档moduleIP(input[1:64]in,output[1:32]L_i_var,output[1:32]R_i_var);assign{L_i_var,R_i_var}={in[58],in[50],in[42],in[34],in[26],in[18],in[10],in[2],in[60],in[52],in[44],in[36],in[28],in[20],in[12],in[4],in[62],in[54],
7、in[46],in[38],in[30],in[22],in[14],in[6],in[64],in[56],in[48],in[40],in[32],in[24],in[16],in[8],in[57],in[49],in[41],in[33],in[25],in[17],in[9],in[1],in[59],in[51],in[43],in[35],in[27],in[19],in[11],in[3],in[61],in[53]