verilog语言实现des算法

verilog语言实现des算法

ID:10901880

大小:41.00 KB

页数:7页

时间:2018-07-08

verilog语言实现des算法_第1页
verilog语言实现des算法_第2页
verilog语言实现des算法_第3页
verilog语言实现des算法_第4页
verilog语言实现des算法_第5页
资源描述:

《verilog语言实现des算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Verilog语言实现DES算法加密算法的高效性与严密性决定其价值,DES算法1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。虽然56位密钥的DES算法已经风光不在,而且常有用Des加密的明文被破译的报道,但是了解一下昔日美国的标准加密算法总是有益的,而且目前DES算法得到了广泛的应用,在某些场合,她仍然发挥着余热~下面介绍用Verilog语言实现DES算法的部分模块://///////////////                                        加密基本

2、模块                                           ////////////////////////从用户处取得一个64位(本文如未特指,均指二进制位))长的密码key,//去除64位密码中作为奇偶校验位的第8、16、24、32、40、48、56、64位,剩下的56位作为有效输入密钥.moduledes(desOut,desIn,vkey,dec,roundSel,clk);  output [63:0] desOut;  //64位的密文输出input [63:0] desIn

3、;  //64位的明文输入input [55:0] vkey;  //56位密钥input  dec;input [3:0] roundSel;//加密轮数控制input  clk;wire [1:48] K_sub;wire [1:64] IP,FP;reg    [1:32] L,R;wire [1:32] Xin;wire [1:32] Lout,Rout;wire [1:32] out;     //初始换位assignIP[1:64]={ desIn[06],desIn[14],desIn[22],desI

4、n[30],desIn[38],desIn[46],......,desIn[33],desIn[41],desIn[49],desIn[57]};assignLout=(roundSel==0)?IP[33:64]:R;assignXin =(roundSel==0)?IP[01:32]:L; //设置并选择子密钥vkey_selvkey_sel1( .K_sub( K_sub), .K( vkey ), .roundSel(roundSel ), .dec(dec) );crpcrp1(.P(out),.R(Lo

5、ut),.K_sub(K_sub)); //调用F函数模块assignRout=Xin^out;assignFP={Rout,Lout};always@(posedgeclk)       L<=#1Lout;always@(posedgeclk)       R<=#1Rout;       assigndesOut={ FP[40],FP[08],FP[48],FP[16],FP[56],FP[24],FP[64],FP[32],......,FP[33],FP[01],FP[41],FP[09],FP[49],

6、FP[17],FP[57],FP[25]};     endmodule    //////////////////////////////                                 迭代函数块                                  //////////////////////////////////DES算法需要进行16次迭代,在完成16次迭代前,把第i-1次得到的的left和right的值作为第i次的输入数据,重复以上步骤,但是有一点要记住:第i次迭代要选择第i次

7、迭代生成的密钥与数据进行按位异或.为保证加密和解密的对称性,DES算法的前15次迭代每完成一次迭代都要交换left和right的值,第16次迭代不交换两者的数值.到此把32位的left和right合并成64位的Data根据表9重新调整Data的位值数据的原第40位换到第一位,原第8位换到第二位,...,依此类推,最后的得到新的64位.Data即为密文.   module crp(P,R,K_sub);output [1:32] P;input [1:32] R;input [1:48] K_sub;wire [1:4

8、8]Temp1;wire [1:48]Temp2;wire [1:32]Temp3;//把R换位并扩展为48位,以便和子密钥进行异或运算assignTemp1[1:48]={ R[32],R[1],R[2],R[3],R[4],R[5],R[4],R[5],.....,R[30],R[31],R[32],R[1]};assignTemp2=Te

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。