版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Verilog语言实现DES算法加密算法的高效性与严密性决定其价值,DES算法1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。虽然56位密钥的DES算法已经风光不在,而且常有用Des加密的明文被破译的报道,但是了解一下昔日美国的标准加密算法总是有益的,而且目前DES算法得到了广泛的应用,在某些场合,她仍然发挥着余热下面介绍用Verilog语言实现DES算法的局部模块:/
2、0; 加密根本模块
3、60; /从用户处取得一个64位(本文如未特指,均指二进制位)长的密码key ,/去除64位密码中作为奇偶校验位的第8、16、24、32、40、48、56、64位,剩下的56位作为有效输入密钥.module des(desOut, desIn, vkey, dec, roundSel, clk); output 63:0 desOut;
4、60; / 64位的密文输出input 63:0 desIn; / 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
5、 Xin;wire 1:32 Lout, Rout;wire 1:32 out; / 初始换位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
6、 : 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)
7、; 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 ;
8、 endmodule / 迭代函数块
9、160; /DES算法需要进行16次迭代,在完成16次迭代前,把第i-1次得到的的left和right的值作为第i次的输入数据,重复以上步骤,但是有一点要记住:第i次迭代要选择第i次迭代生成的密钥与数据进行按位异或.为保证加密和解密的对称性,DES算法的前15次迭代每完成一次迭代都要交换left和ri
10、ght的值,第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:48 Temp1;wire 1:48 Temp2;wire 1:32 Temp3
11、;/ 把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(
12、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 = Temp
13、316, Temp37, Temp320, Temp321, Temp329, Temp312, Temp328,Temp317, Temp31, Temp315, Temp323, Temp326, Temp35, Temp318,Temp331, Temp310, Temp32, Temp38, Temp324, Temp314,
14、 Temp332,Temp327, Temp33, Temp39, Temp319, Temp313, Temp330, Temp36,Temp322, Temp311, Temp34, Temp325;endmodule /
15、0; 密钥设置模块 /根据给定的密钥设置16个48位的子密钥 ,数据解密的算法与加密算法相同,区别在于加密步骤中和数据进行按位异或的密钥的使用顺序不同,在加密中是按照第i次迭代就采用第i次迭代生成的密钥进行异或,而解密
16、时第i次迭代就采用第17-i次迭代生成的密钥和数据进行异或.module vkey_sel(K_sub, K, roundSel, dec);output 1:48 K_sub;input 55:0 K;input 3:0 roundSel;input dec;reg 1:48 K_sub;wire 1:48 K1, K2, K3, K4, K5, K6, K7, K8, K9;wire 1:48 K10, K11, K12, K13, K14, K15, K
17、16;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) / 明确指定步骤中该使用哪一个子密钥
18、 0: K_sub = K1; 1: K_sub = K2; 2: K_sub = K3; 3: K_sub
19、 = K4; 4: K_sub = K5; 5: K_sub = K6; 6: K_sub = K7;
20、60; 7: K_sub = K8; 8: K_sub = K9; 9: K_sub = K10; 10:
21、K_sub = K11; 11: K_sub = K12; 12: K_sub = K13; 13: K_sub = K14;
22、60; 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 =
23、 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 K16
24、15 = 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;as
25、sign 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 :
26、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 ?
27、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
28、60; : 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- AI在中小企业创业与经营中的应用
- 湖北省宜昌市伍家岗区2023-2024学年五年级下学期期末学业水平监测作业语文试题
- 医院会议保密制度
- 001-15.物料提升机安装检验评定报告
- 2026年译林版(三起)版小学英语六年级下册期末综合测试卷及答案(2套)
- DBJ50-T-552-2026 城镇排水管网智慧化建设技术标准
- 2026辅警面试题目参考及答案
- 2026包装部经理面试题及答案
- 2026年压力性损伤临床防治指南考试试题
- 部编版九年级下册古诗词知识点汇-总
- 2026上海崇明横沙乡招聘事务工作者10人笔试参考题库及答案解析
- 苏教版四年级数学下册期末检测卷(带答案)
- 宁波杭州湾新区水明江(十一塘横江-十二塘横江)和水智江(兴慈 四路-兴慈七路)河道工程海域使用论证报告书
- 2025年甘肃省兰州市八年级地理生物会考真题试卷(含答案)
- 锂电池企业爆炸应急演练脚本
- 煤矿事故案例分析
- 提高住院患者大小便标本留取合格率
- 探秘RFC:神经嵴发育调控与胶质瘤细胞杀伤机制的深度剖析
- 4s店车间规范管理制度
- 电缆桥架桥架内电缆敷设施工方案
- 2025年大学大四(材料成型及控制工程)特种铸造试题及答案
评论
0/150
提交评论