




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Verilog语言实现DES算法加密算法的高效性与严密性决定其价值,DES算法1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。虽然56位密钥的DES算法已经风光不在,而且常有用Des加密的明文被破译的报道,但是了解一下昔日美国的标准加密算法总是有益的,而且目前DES算法得到了广泛的应用,在某些场合,她仍然发挥着余热下面介绍用Verilog语言实现DES算法的部分模块:/ 加密基本模块/从用户处取得一个64位(本文如未特指,均指二进制位)长的密码key ,/去除64位密码中作为奇偶校验位的第8、16、24、32、40、48、56、64位,剩下的56位作为有效输入密钥.module des(desOut, desIn, vkey, dec, roundSel, clk);output63:0desOut; / 64位的密文输出input63:0desIn; / 64位的明文输入input55:0vkey; / 56位密钥inputdec;input3:0roundSel; / 加密轮数控制inputclk;wire1:48K_sub;wire1:64IP, FP;reg 1:32L, R;wire1:32Xin;wire1:32Lout, Rout;wire1:32out;/ 初始换位assign IP1:64 = desIn06, desIn14, desIn22, desIn30, desIn38, desIn46,.,desIn33, desIn41, desIn49, desIn57 ;assign Lout = (roundSel = 0) ? IP33:64 : R;assign Xin = (roundSel = 0) ? IP01:32 : L;/ 设置并选择子密钥vkey_sel vkey_sel1(.K_sub(K_sub ),.K(vkey),.roundSel( roundSel),.dec( dec );crp crp1( .P( out ), .R( Lout ), .K_sub( K_sub ) ); /调用F函数模块assign Rout = Xin out;assign FP = Rout, Lout;always (posedge clk) L = #1 Lout;always (posedge clk) R = #1 Rout;assign desOut = FP40, FP08, FP48, FP16, FP56, FP24, FP64, FP32,.,FP33, FP01, FP41, FP09, FP49, FP17, FP57, FP25 ;endmodule/ 迭代函数块/DES算法需要进行16次迭代,在完成16次迭代前,把第i-1次得到的的left和right的值作为第i次的输入数据,重复以上步骤,但是有一点要记住:第i次迭代要选择第i次迭代生成的密钥与数据进行按位异或.为保证加密和解密的对称性,DES算法的前15次迭代每完成一次迭代都要交换left和right的值,第16次迭代不交换两者的数值. 到此把32位的left和right合并成64位的Data根据表9重新调整Data的位值数据的原第40位换到第一位,原第8位换到第二位,.,依此类推,最后的得到新的64位.Data即为密文.module crp(P, R, K_sub);output1:32P;input1:32R;input1:48K_sub;wire1:48 Temp1;wire1:48 Temp2;wire1:32 Temp3;/ 把R换位并扩展为48位,以便和子密钥进行异或运算assign Temp11:48 = R32, R1, R2, R3, R4, R5, R4, R5,.,R30, R31, R32, R1;assign Temp2 = Temp1 K_sub;/ 调用S盒模块,利用Temp2寻址,得出Temp3各位的值sbox1 u0( .addr(Temp201:06), .dout(Temp301:04) );sbox2 u1( .addr(Temp207:12), .dout(Temp305:08) );sbox3 u2( .addr(Temp213:18), .dout(Temp309:12) );sbox4 u3( .addr(Temp219:24), .dout(Temp313:16) );sbox5 u4( .addr(Temp225:30), .dout(Temp317:20) );sbox6 u5( .addr(Temp231:36), .dout(Temp321:24) );sbox7 u6( .addr(Temp237:42), .dout(Temp325:28) );sbox8 u7( .addr(Temp243:48), .dout(Temp329:32) );/ 将Temp3换位并赋给输出Passign P1:32 = Temp316, Temp37, Temp320, Temp321, Temp329, Temp312, Temp328,Temp317, Temp31, Temp315, Temp323, Temp326, Temp35, Temp318,Temp331, Temp310, Temp32, Temp38, Temp324, Temp314,Temp332,Temp327, Temp33, Temp39, Temp319, Temp313, Temp330,Temp36,Temp322, Temp311, Temp34, Temp325;endmodule/ 密钥设置模块 /根据给定的密钥设置16个48位的子密钥,数据解密的算法与加密算法相同,区别在于加密步骤中和数据进行按位异或的密钥的使用顺序不同,在加密中是按照第i次迭代就采用第i次迭代生成的密钥进行异或,而解密时第i次迭代就采用第17-i次迭代生成的密钥和数据进行异或.module vkey_sel(K_sub, K, roundSel, dec);output1:48K_sub;input55:0K;input3:0roundSel;inputdec;reg 1:48K_sub;wire 1:48K1, K2, K3, K4, K5, K6, K7, K8, K9;wire 1:48K10, K11, K12, K13, K14, K15, K16;always (K1 or K2 or K3 or K4 or K5 or K6 or K7 or K8 or K9 or K10 or K11 or K12 or K13 or K14 or K15 or K16 or roundSel)case (roundSel)/ 明确指定步骤中该使用哪一个子密钥 0: K_sub = K1; 1: K_sub = K2; 2: K_sub = K3; 3: K_sub = K4; 4: K_sub = K5; 5: K_sub = K6; 6: K_sub = K7; 7: K_sub = K8; 8: K_sub = K9; 9: K_sub = K10; 10: K_sub = K11; 11: K_sub = K12; 12: K_sub = K13; 13: K_sub = K14; 14: K_sub = K15; 15: K_sub = K16;endcase/ 利用dec和密钥K各位的值逐一确定16个子密钥各位的值assign K161 = dec ? K47 : K40;assign K162 = dec ? K11 : K4;assign K163 = dec ? K26 : K19;assign K164 = dec ? K3 : K53;assign K165 = dec ? K13 : K6;assign K166 = dec ? K41 : K34;assign K167 = dec ? K27 : K20;assign K168 = dec ? K6 : K24;assign K169 = dec ? K54 : K47;assign K1610 = dec ? K48 : K41;assign K1611 = dec ? K39 : K32;assign K1612 = dec ? K19 : K12;assign K1613 = dec ? K53 : K46;assign K1614 = dec ? K25 : K18;assign K1615 = dec ? K33 : K26;assign K1616 = dec ? K34 : K27;assign K1617 = dec ? K17 : K10;assign K1618 = dec ? K5 : K55;assign K1619 = dec ? K4 : K54;assign K1620 = dec ? K55 : K48;assign K1621 = dec ? K24 : K17;assign K1622 = dec ? K32 : K25;assign K1623 = dec ? K40 : K33;assign K1624 = dec ? K20 : K13;assign K1625 = dec ? K36 : K29;assign K1626 = dec ? K31 : K51;assign K1627 = dec ? K21 : K14;assign K1628 = dec ? K8 : K1;assign K1629 = dec ? K23 : K16;assign K1630 = dec ? K52 : K45;assign K1631 = dec ? K14 : K7;assign K1632 = dec ? K29 : K22;assign K1633 = dec ? K51 : K44;assign K1634 = dec ? K9 : K2;assign K1635 = dec ? K35 : K28;assign K1636 = dec ? K30 : K23;assign K1637 = dec ? K2 : K50;assign K1638 = dec ? K37 : K30;assign K1639 = dec ? K22 : K15;assign K1640 = dec ? K0 : K52;assign K1641 = dec ? K42 : K35;assign K1642 = dec ? K38 : K31;assign K1643 = dec ? K16 : K9;assign K1644 = dec ? K43 : K36;assign K1645 = dec ? K44 : K37;assign K1646 = dec ? K1 : K49;assign K1647 = dec ? K7 : K0;assign K1648 = dec ? K28 : K21;.assign K11 = dec ? K40 : K47;assign K12 = dec ? K4 : K11;assign K13 = dec ? K19 : K26;assign K14 = dec ? K53 : K3;assign K15 = dec ? K6 : K13;assign K16 = dec ? K34 : K41;assign K17 = dec ? K20 : K27;assign K18 = dec ? K24 : K6;assign K19 = dec ? K47 : K54;assign K110 = dec ? K41 : K48;assign K111 = dec ? K32 : K39;assign K112 = dec ? K12 : K19;assign K113 = dec ? K46 : K53;assign K114 = dec ? K18 : K25;assign K115 = dec ? K26 : K33;assign K116 = dec ? K27 : K34;assign K117 = dec ? K10 : K17;assign K118 = dec ? K55 : K5;assign K119 = dec ? K54 : K4;assign K120 = dec ? K48 : K55;assign K121 = dec ? K17 : K24;assign K122 = dec ? K25 : K32;assign K123 = dec ? K33 : K40;assign K124 = dec ? K13 : K20;assign K125 = dec ? K29 : K36;assign K126 = dec ? K51 : K31;assign K127 = dec ? K14 : K21;assign K128 = dec ? K1 : K
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025涟水县事业单位招聘人员40人模拟试卷及答案详解(有一套)
- 大学课件园教学课件
- 邯郸市人民医院呼吸科呼吸治疗仪器维护与质控考核
- 2025湖北恩施州巴东县畜牧兽医服务中心招聘公益性岗位人员2人考前自测高频考点模拟试题及答案详解(新)
- 沧州市中医院疑难编码案例考核
- 2025黑龙江绥化市青冈县人民政府办公室选调5名模拟试卷及答案详解1套
- 衡水市人民医院儿科年度综合能力评估
- 2025呼伦贝尔莫旗消防救援大队招聘消防文员考前自测高频考点模拟试题及答案详解(夺冠)
- 2025儿童医院职业病与工作相关疾病的预防指导考核
- 大学电势课件
- 国务院便民服务管理办法
- 甘肃省医疗建设管理办法
- 胸痛的护理教学课件
- 《中国高血压防治指南(2024年修订版)》解读课件
- 2025年辅警招聘考试题库(+答案解析)
- DIEP乳房重建术后的护理指南
- 中信财务管理制度
- 2025至2030年中国硅烷气体行业发展现状调查及市场分析预测报告
- 2025贵阳银行笔试题库及答案
- GB/T 17643-2025土工合成材料聚乙烯土工膜
- 艺术漆涂料施工合同协议
评论
0/150
提交评论