预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

密码学与网络安全课程实验利用Matlab语言实现DES加密算法姓名:ZA学号:XXXXX实验目的牢固掌握DES密码算法通过编程实现DES算法深入掌握现代密码算法实现的基本方法验证DES算法中各个模块在实现混淆和弥散中的作用实验内容要求DES算法实现:利用Matlab语言实现DES密码算法输入64比特明文和56比特密钥加密得到64比特的密文;DES弱密钥验证:观察弱密钥两次加密的结果与非弱密钥两次加密的结果进行比较;DES算法初步应用:尝试加密一个字符串字符串的长度大于8个字节;DES弥散特性分析:试输出每一轮加密得到的比特序列并比较当初始明文1个比特发生变化时每一轮加密输出的哪些比特发生变化。实验方案与步骤DES算法实现算法实现方案Matlab(矩阵实验室)是一款工程计算用的软件功能十分强大。Matlab的计算基于矩阵而DES算法用矩阵描述是十分简洁方便的。因此选用Matlab作为算法实现语言基于一系列的矩阵变换、运算来实现DES算法的加密。主要功能实现流程及代码解析加密程序图1DES基本结构DES算法的结构非常简单是一个16次的迭代。核心是函数中一系列变换。根据算法框图程序步骤主要分为三大部分:输入明文和密钥进行字符转换产生16轮密钥矩阵16轮迭代%%demo5.mclcclearall;%%%----------第一步输入明文和密钥-------------%M='0123456789ABCDEF';%K='0123456789ABCDEF';%MB=[];fori=1:16Mi=M(i);MBi=['0000'dec2bin(hex2dec(Mi))];MBi=MBi(end-3:end);MBi=[str2num(MBi(1))str2num(MBi(2))str2num(MBi(3))str2num(MBi(4))];MB=[MBMBi];endM=MB;%转化为64位二进制明文KB=[];fori=1:16Ki=K(i);KBi=['0000'dec2bin(hex2dec(Ki))];KBi=KBi(end-3:end);KBi=[str2num(KBi(1))str2num(KBi(2))str2num(KBi(3))str2num(KBi(4))];KB=[KBKBi];endK=KB;%转化为64位二进制密钥%%%----------第三步产生密钥-------------%PC_1=[57494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124];%PC_1置换矩阵56位KEY0=K(PC_1);%初始矩阵变换64to56%循环移位>>>>>shift_array=-[1122222212222221];C(1:)=KEY0(1:28);%C0D(1:)=KEY0(29:56);%D0fori=2:17C(i:)=circshift(C(i-1:)'shift_array(i-1))';%前28位循环移位%circshift是右移移动负数位表示左移D(i:)=circshift(D(i-1:)'shift_array(i-1))';%后28位循环移位endPC2=[1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932];Ki=zeros(1648);%循环移位>>>>>KEY_MAT=[CD];%17*56KEY_MAT=KEY_MAT(2:17:);%16*56PC_2=[1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932];fori=1:16Ki(i:)=KEY_MAT(iPC_2);endKEY=Ki;%%%----------第四步Feistel结构-------------%IP=[585042342618102605244362820124625446383022146645648403224168574941332517915951433527191136