用c完成DES加密过程中的1轮的迭代器变换过程

6.数据加密标准DES_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
6.数据加密标准DES
数​据​加​密​标​准​D​E​S
大小:508.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢des 密码学的des算法的加密与解密的过程,其中有16轮迭代。c语言实现。 Crack_Hack 破解 238万源代码下载-
&文件名称: des
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 310 KB
&&上传时间:
&&下载次数: 38
&&提 供 者:
&详细说明:密码学的des算法的加密与解密的过程,其中有16轮迭代。c语言实现。-Des algorithm cryptography encryption and decryption process, of which 16 iterations. c language.
文件列表(日期:~)(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&des&&...\answer.txt&&...\de&&...\..\answer.txt&&...\..\Debug&&...\..\&&...\..\decode.dsp&&...\..\decode.dsw&&...\..\decode.ncb&&...\..\decode.opt&&...\..\decode.plg&&...\..\key.txt&&...\..\original.txt&&...\decode.exe&&...\en&&...\..\answer.txt&&...\..\Debug&&...\..\&&...\..\encode.dsp&&...\..\encode.dsw&&...\..\encode.exe&&...\..\encode.ncb&&...\..\encode.opt&&...\..\encode.plg&&...\..\incode.txt&&...\..\key.txt&&...\encode.exe&&...\incode.txt&&...\key.txt&&...\original.txt
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 主要介绍逐步回归的方法,并介绍如何利用逐步回归建立最佳线性回归方程。
&[] - 利用RSA对称算法实现文件加密,密钥512位,比较安全。但不是特别安全。因为推荐2048位的密钥目前是很安全的。
&[] - 高级加密标准,在信息安全中应用广泛.比DES先进.
&[] - 一个暴力破解密码的小程序。需要数据字典。
&[] - 加密算法,是一个大虾写的,我觉得不错,希望和大家一起分享^-^
&[] - DES算法完整源码与调用方法
&[] - DES加密软件
自己写的 还不错的
&[] - 密码学课设~DES加密算法的完整实现 内容简单适合新人学习使用
&[] - C 语言编写的DES加密算法,可以用的,我自己测试过,欢迎大家下载
&[] - 由本站与广大网友合作的新书《加密与解密--软件保护技术与解决方案》于近日上市,全国新华书店发行,需要者可于近期到本地各大书店咨询。
  看完这本书,解密不再神秘。不论是解密爱好者还是软件编程者都应该好好去看看。des算法加密解密的实现_百度知道
des算法加密解密的实现
设计一个具有交互功能的加密、解密算法,要求具有美观的界面,良好的性能,开发工具不限,开发方式不限(WEB方式或者本地应用程序都行)但是要有图形界面,程序能够运行:
1.DES算法的实现;明文和密钥用字母或者数字表示(64位二进制用8个字母或者数字,56位二进制用7个字母或者数字)
提问者采纳
一.加密 DES算法处理的数据对象是一组64比特的明文串。设该明文串为m=m1m2…m64 (mi=0或1)。明文串经过64比特的密钥K来加密,最后生成长度为64比特的密文E。其加密过程图示如下: DES算法加密过程 对DES算法加密过程图示的说明如下:待加密的64比特明文串m,经过IP置换后,得到的比特串的下标列表如下: IP 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 该比特串被分为32位的L0和32位的R0两部分。R0子密钥K1(子密钥的生成将在后面讲)经过变换f(R0,K1)(f变换将在下面讲)输出32位的比特串f1,f1与L0做不进位的二进制加法运算。运算规则为: f1与L0做不进位的二进制加法运算后的结果赋给R1,R0则原封不动的赋给L1。L1与R0又做与以上完全相同的运算,生成L2,R2…… 一共经过16次运算。最后生成R16和L16。其中R16为L15与f(R15,K16)做不进位二进制加法运算的结果,L16是R15的直接赋值。 R16与L16合并成64位的比特串。值得注意的是R16一定要排在L16前面。R16与L16合并后成的比特串,经过置换IP-1后所得比特串的下标列表如下: IP-1 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 经过置换IP-1后生成的比特串就是密文e.。 下面再讲一下变换f(Ri-1,Ki)。 它的功能是将32比特的输入再转化为32比特的输出。其过程如图所示: 对f变换说明如下:输入Ri-1(32比特)经过变换E后,膨胀为48比特。膨胀后的比特串的下标列表如下: E: 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 31 膨胀后的比特串分为8组,每组6比特。各组经过各自的S盒后,又变为4比特(具体过程见后),合并后又成为32比特。该32比特经过P变换后,其下标列表如下: P: 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 经过P变换后输出的比特串才是32比特的f (Ri-1,Ki)。 下面再讲一下S盒的变换过程。任取一S盒。见图: 在其输入b1,b2,b3,b4,b5,b6中,计算出x=b1*2+b6, y=b5+b4*2+b3*4+b2*8,再从Si表中查出x 行,y 列的值Sxy。将Sxy化为二进制,即得Si盒的输出。(S表如图所示) 至此,DES算法加密原理讲完了。在VC++6.0下的程序源代码为: for(i=1;i&=64;i++) m1[i]=m[ip[i-1]];//64位明文串输入,经过IP置换。 下面进行迭代。由于各次迭代的方法相同只是输入输出不同,因此只给出其中一次。以第八次为例://进行第八次迭代。首先进行S盒的运算,输入32位比特串。 for(i=1;i&=48;i++)//经过E变换扩充,由32位变为48位 RE1[i]=R7[E[i-1]]; for(i=1;i&=48;i++)//与K8按位作不进位加法运算 RE1[i]=RE1[i]+K8[i]; for(i=1;i&=48;i++) { if(RE1[i]==2) RE1[i]=0; } for(i=1;i&7;i++)//48位分成8组 { s11[i]=RE1[i]; s21[i]=RE1[i+6]; s31[i]=RE1[i+12]; s41[i]=RE1[i+18]; s51[i]=RE1[i+24]; s61[i]=RE1[i+30]; s71[i]=RE1[i+36]; s81[i]=RE1[i+42]; }//下面经过S盒,得到8个数。S1,s2,s3,s4,s5,s6,s7,s8分别为S表 s[1]=s1[s11[6]+s11[1]*2][s11[5]+s11[4]*2+s11[3]*4+s11[2]*8]; s[2]=s2[s21[6]+s21[1]*2][s21[5]+s21[4]*2+s21[3]*4+s21[2]*8]; s[3]=s3[s31[6]+s31[1]*2][s31[5]+s31[4]*2+s31[3]*4+s31[2]*8]; s[4]=s4[s41[6]+s41[1]*2][s41[5]+s41[4]*2+s41[3]*4+s41[2]*8]; s[5]=s5[s51[6]+s51[1]*2][s51[5]+s51[4]*2+s51[3]*4+s51[2]*8]; s[6]=s6[s61[6]+s61[1]*2][s61[5]+s61[4]*2+s61[3]*4+s61[2]*8]; s[7]=s7[s71[6]+s71[1]*2][s71[5]+s71[4]*2+s71[3]*4+s71[2]*8]; s[8]=s8[s81[6]+s81[1]*2][s81[5]+s81[4]*2+s81[3]*4+s81[2]*8]; for(i=0;i&8;i++)//8个数变换输出二进制 { for(j=1;j&5;j++) { temp[j]=s[i+1]%2; s[i+1]=s[i+1]/2; } for(j=1;j&5;j++) f[4*i+j]=temp[5-j]; } for(i=1;i&33;i++)//经过P变换 frk[i]=f[P[i-1]];//S盒运算完成 for(i=1;i&33;i++)//左右交换 L8[i]=R7[i]; for(i=1;i&33;i++)//R8为L7与f(R,K)进行不进位二进制加法运算结果 { R8[i]=L7[i]+frk[i]; if(R8[i]==2) R8[i]=0; } [ 原创文档 本文适合中级读者 已阅读21783次 ] 文档 代码 工具 DES算法及其在VC++6.0下的实现(下) 作者:航天医学工程研究所四室 朱彦军 在《DES算法及其在VC++6.0下的实现(上)》中主要介绍了DES算法的基本原理,下面让我们继续: 二.子密钥的生成 64比特的密钥生成16个48比特的子密钥。其生成过程见图: 子密钥生成过程具体解释如下: 64比特的密钥K,经过PC-1后,生成56比特的串。其下标如表所示: PC-1 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 该比特串分为长度相等的比特串C0和D0。然后C0和D0分别循环左移1位,得到C1和D1。C1和D1合并起来生成C1D1。C1D1经过PC-2变换后即生成48比特的K1。K1的下标列表为: PC-2 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 C1、D1分别循环左移LS2位,再合并,经过PC-2,生成子密钥K2……依次类推直至生成子密钥K16。 注意:Lsi (I =1,2,….16)的数值是不同的。具体见下表: 迭代顺序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 左移位数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 生成子密钥的VC程序源代码如下: for(i=1;i&57;i++)//输入64位K,经过PC-1变为56位 k0[i]=k[PC_1[i-1]]; 56位的K0,均分为28位的C0,D0。C0,D0生成K1和C1,D1。以下几次迭代方法相同,仅以生成K8为例。 for(i=1;i&27;i++)//循环左移两位 { C8[i]=C7[i+2]; D8[i]=D7[i+2]; } C8[27]=C7[1]; D8[27]=D7[1]; C8[28]=C7[2]; D8[28]=D7[2]; for(i=1;i&=28;i++) { C[i]=C8[i]; C[i+28]=D8[i]; } for(i=1;i&=48;i++) K8[i]=C[PC_2[i-1]];//生成子密钥k8 注意:生成的子密钥不同,所需循环左移的位数也不同。源程序中以生成子密钥 K8为例,所以循环左移了两位。但在编程中,生成不同的子密钥应以Lsi表为准。 三.解密 DES的解密过程和DES的加密过程完全类似,只不过将16圈的子密钥序列K1,K2……K16的顺序倒过来。即第一圈用第16个子密钥K16,第二圈用K15,其余类推。 第一圈: 加密后的结果 L=R15, R=L15⊕f(R15,K16)⊕f(R15,K16)=L15 同理R15=L14⊕f(R14,K15), L15=R14。 同理类推: 得 L=R0, R=L0。 其程序源代码与加密相同。在此就不重写。 四.示例 例如:已知明文m=learning, 密钥 k=computer。 明文m的ASCII二进制表示: m= 01
密钥k的ASCII二进制表示: k=01
明文m经过IP置换后,得: 11 11 11000 等分为左右两段: L0=11 =01
经过16次迭代后,所得结果为: L1=01 =11
L4== L5== L6== L7== L8== L9== L10== L11== L12== L13== L14== L15== L16== 其中,f函数的结果为: f1== f3== f5== f7== f9== f11== f13== f15== 16个子密钥为: K1== K3== K5== K7== K9== K11== K13== K15== S盒中,16次运算时,每次的8 个结果为: 第一次:5,11,4,1,0,3,13,9; 第二次:7,13,15,8,12,12,13,1; 第三次:8,0,0,4,8,1,9,12; 第四次:0,7,4,1,7,6,12,4; 第五次:8,1,0,11,5,0,14,14; 第六次:14,12,13,2,7,15,14,10; 第七次:12,15,15,1,9,14,0,4; 第八次:15,8,8,3,2,3,14,5; 第九次:8,14,5,2,1,15,5,12; 第十次:2,8,13,1,9,2,10,2; 第十一次:10,15,8,2,1,12,12,3; 第十二次:5,4,4,0,14,10,7,4; 第十三次:2,13,10,9,2,4,3,13; 第十四次:13,7,14,9,15,0,1,3; 第十五次:3,1,15,5,11,9,11,4; 第十六次:12,3,4,6,9,3,3,0; 子密钥生成过程中,生成的数值为: C0=0 C1=1 C2=0 C3=0 C4=0 C5=1 C6=1 C7=1 C8=1 C9=1 C10=0 C11=0 C12=0 C13=1 C14=1 C15=0 C16=0
其他类似问题
为您推荐:
其他1条回答
本文介绍了一种国际上通用的加密算法—DES算法的原理,并给出了在VC++6.0语言环境下实现的源代码。最后给出一个示例,以供参考。
关键字:DES算法、明文、密文、密钥、VC;
本文程序运行效果图如下:
当今社会是信息化的社会。为了适应社会对计算机数据安全保密越来越高的要求,美国国家标准局(NBS)于1997年公布了一个由IBM公司研制的一种加密算法,并且确定为非机要部门使用的数据加密标准,简称DES(Data Encrypton Standard)。自公布之日起,DES算法作为国际上商用保密通信和计算机通信的最常用算法,一直活跃在国际保密通信的舞台上,扮演了十分突出的角色。现将DES算法简单介绍一下,并给出实现DES算法的VC源代码。
DES算法由加密、解密和子密钥的生成三部分组成。
您可能关注的推广
加密解密的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁编程实现AES算法的加密解密过程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
编程实现AES算法的加密解密过程
西​安​交​大​电​信​学​院​研​究​生​《​信​息​安​全​工​程​》​课​程​实​验​一​报​告​。
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢加密技术与DES加解密算法_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
加密技术与DES加解密算法
加​密​技​术​与​D​E​S​加​解​密​算​法
大小:343.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 迭代模型 的文章

 

随机推荐