毕业设计-des算法的可视化程序的实现—论文内容摘要:
怀疑 S盒的设计可能隐藏着某种陷门,它可以使了解陷门的人能够成功的进行密码分析。 经过多年来的研究,人们的确发现了 S 盒的很多规律,但至今还没有发现 S 盒的致命缺陷。 算法流程 DES 算法把 64 位的明文输入块变为 64 位的密文输出块,它所使用的密钥也是 64 位,整个算法的主流程图如下: 其功能是把输入的 64位数据块按位重新组合,并把输出分为 L0、 R0两部分,每部分各长 32 位,其置换规则见下表: 58,50,12,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, 即将输入的第 58位换到第一位,第 50位换到第 2 位, ...,依此类推,最后一位是原来的第 7位。 L0、 R0则是换位输出后的两部分, L0 是输出的左 32位,R0 是右 32位,例:设置换前的输入值为 D1D2D3......D64,则经过初始置换后的结果为: L0=D58D50...D8; R0=D57D49...D7。 经过 26次迭代运算后。 得到 L1R16,将此作为输入,进行逆置换,即得到密文输出。 逆置换正好是初始置的逆运算, 例如,第 1 位经过初始置换后,处于第 40位,而通过逆置换,又将第 40位换回到第 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, 放大换位表: 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, 1, 第 8 页 共 23 页 单纯换位表: 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, 在 f(Ri,Ki)算法描述图中, S1,S2...S8 为选择函数,其功能是把 6bit 数据变为 4bit 数据。 下面给出选择函数 Si(i=1,2......8)的功能表: 选择函数 Si S1: 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7, 0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8, 4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0, 15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13, S2: 15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10, 3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5, 0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15, 13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9, S3: 10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8, 13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1, 13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7, 1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12, S4: 7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15, 13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9, 10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4, 3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14, S5: 2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9, 14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6, 4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14, 11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3, S6: 12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11, 10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8, 9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6, 第 9 页 共 23 页 4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13, S7: 4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1, 13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6, 1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2, 6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12, S8: 13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7, 1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2, 7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8, 2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11, 在此以 S1 为例说明其功能,我们可以看到:在 S1 中,共有 4行数据,命名为 0, 3行;每行有 16列,命名为 0、 3, ......, 1 15列。 现设输入为: D= D1D2D3D4D5D6 令:列= D2D3D4D5 行= D1D6 然后在 S1 表中查得对应的数,以 4位二进制表示,此即为选择函数 S1 的输出。 下面给出子密钥 Ki(48bit)的生成算法。 从子密钥 Ki 的生成算法描述图中我们可以看到:初始 Key 值为 64 位,但 DES算法规定,其中第 1 ......64 位是奇偶校验位,不参与 DES 运算。 故 Key 实际可用位数便只有 56 位。 即:经过缩小选择换位表 1 的变换后, Key 的位数由 64 位变成了 56位,此 56 位分为 C0、 D0 两部分,各 28 位,然后分别进行第 1次循环左移,得到 C D1,将 C1( 28 位)、 D1( 28 位)合并得到 56位,再经过缩小选择换位 2,从而便得到了密钥 K0( 48 位)。 依此类推,便可得到 K K ......、K15,不 过需要注意的是, 16 次循环左移对应的左移位数要依据下述规则进行:循环左移位数 1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1以上介绍了 DES算法的加密过程。 DES 算法的解密过程是一样的,区别仅仅在于第一次迭代时用子密钥 K15,第二次 K1 ......,最后一次用 K0,算法本身并没有任何变化。 第 10 页 共 23 页 3 算法实现及应用 应用程序结构 程序总体功能有加密演示 ,保密通信 ,对文本文件进行加密三个部分 ,同时提供对密匙的简单管理 ,用户可根据需要 自行修改密匙设置 .程序上各个功能模块的执行依赖于界面事件 ,程序采用 JAVA 实现 ,充分利用了 JAVA 的事件模型 .事件驱动的原理是 注册监视器 ,为对象添加监视器 ,捕获事件 ,分析事件原因以及类型 ,根据事件的不同 ,执行不同的功能代码 .本程序 根据用户执行的操作 ,程序 捕获 界面上发生的 事件 ,再 根据事件的类型 ,执行不同的功能函数。 图 21 算法流程图 第 11 页 共 23 页 应用程序底层加密接口 在封装的 DES 类中 ,提供了两个对外的接口 ,这两个接口非常重要 ,是本设计的核心 ,它独立的实现了对任意长字符串的加密 ,支持中英文的字符输入方式 ,其实现如下部分代码所示 : 加密接口: public String Encrypt(String In) { String ret=。 if(!IsDencrypted(In)) { int count=0。 char Buffer[]=new char[(()/4+1)*5]。 In=()。 int x=()。 for(int i=1。 i=(x/4+1)。 i++) { if(i==(x/4+1)) { String si=(4*(i1),x)。 char a[]=PreEncrypt(si).toCharArray()。 for(int t=0。 t4。 t++) { Buffer[count++]=a[t]。 } Buffer[count++]=39。 39。 } else { String si=(4*(i1),4*i)。 char a[]=PreEncrypt(si).toCharArray()。 for(int t=0。 t4。 t++) { Buffer[count++]=a[t]。 } Buffer[count++]=39。 39。 } } ret=new String(Buffer)。 } else { StringTokenizer analysis=new StringTokenizer(In,)。 int count=0。 char Buffer[]=new char[()]。 while(()) { String str=()。 char a[]=PreEncrypt(str).toCharArray()。 for(int i=0。 i4。 i++) { Buffer[count++]=a[i]。 } } ret=new String(Buffer)。 } return ret。 } 解密接口: public String Dencrypt(String In) { String ret=。 if(IsEncrypted(In)) { StringTokenizer analysis=new StringTokenizer(In,)。 int count=0。 第 12 页 共 23 页 char Buffer[]=new char[()]。 while(()) { String str=()。 char a[]=PreDencrypt(str).toCharArray()。 for(int i=0。 i4。 i++) {Buffer[count++]=a[i]。 } }ret=new String(Buffer)。 } else {int count=0。 char Buffer[]=new char[(()/4+1)*5]。 In=()。 int x=()。 for(int i=1。 i=(x/4+1)。 i++) { if(i==(x/4+1)) { String si=(4*(i1),x)。 char a[]=PreDencrypt(si).toCharArray()。 for(int t=0。 t4。 t++) {Buffer[count++]=a[t]。 }Buffer[count++]=39。 39。 } else { String si=(4*(i1),4*i)。 char a[]=PreDencrypt(si).toCharArray()。 for(int t=0。 t4。 t++) { Buffer[count++]=a[t]。 } Buffer[count++]=39。 39。 }}ret=new String(Buffer)。 }return ret。 } 功能模块定义 本模块是应用程序的默认选项 ,在应用程序初始化的时候 ,本模块被初始化 .该模块实现对用户透明的保密通信 .采用 C/S 结构 ,服务器端显示信息窗口和客户端显示信息窗口集成在同一个显示面板上 .单击启动服务器按钮 ,将创建一个服务器端 SOCKET,并在端口 2020 上监听 .单击启动客户端 ,经过 TCP/IP 三次握手以后将建立一个与服务器端的连接 ,在这之间 ,服务器端和客户端便有了一条数。毕业设计-des算法的可视化程序的实现—论文
相关推荐
按顺序排列。 在 RUN 工作模式的程序执行阶段,在没有跳转指令时, CPU 从第一条指令开始,逐条顺序地执行用户程序。 在执行指令时,从 I/O 映像寄存器或别的位元件的映像寄存器读出其 0/1 状态,并根据指令的要求执行相应的逻辑运算,运算的结果写入到相应的映像寄存器中,因此,各映像寄存器的内容随着程序的执行而变 化。 在程序执行阶段,即使外部输入信号的状态发生了变化
QL Server 版本的优点,同时又比它增加了许多更先进的功能、具有使用方便、可伸缩性好与相关软件集成程度高等优点。 SQL Server 不但可以应用于大中型数据库管理中,建立分布式关系数据库,并且也可以开发桌面数据库。 事实上, SQLServer 数据库处理的基本结构,采取关系型数据库模式,尽管如此,相信大家都可以轻易的发现,在 SQL Server 的数据库处理方式
处理客户机程序提出的请求 ,然后返回结果。 C/S 模式特点: (1)C/S 模式将应用与服务分离 ,系统具有稳定性和灵活性 (2)C/S 模式配备的是点对点的结构模式 ,适用于局域网 ,有可靠的安全性 (3)由于客 户端实现与服务器端的直接连接 ,没有中间环节 ,因此响应速度快 (4)在 C/S 模式中 ,作为客户机的计算机都要安装客户机程序 ,一旦软件系统升每台客户机都要安装客户机程序
型机 领域中颇具盛名,某些用欧美的中型机或大型机才能实现的控制,日本的小型机就可以解决。 在开发较复杂的控制系统方面明显优于欧美的小型机,所以格外受用户 欢迎。 日本有许多 PLC 制造商,如三菱、欧姆龙、松下、富士、日立、东芝等,在世界小型 PLC 市场上,日本产品约占有 70%的份额。 欧姆龙( OMRON)公司的 PLC 产品,大、中、小、微型规格齐全。 微型机以 SP 系列为代表
学研究的,是德国社会学家滕尼斯。 他于 1881 年将 Gemeischaft (一般译为共同体、团体、集体、公社、社区等 )一词,首先用于社会学。 滕尼社区文化建设的内容及基本特征 7 斯用 Gemeischaft 表示一种由共同价值观念的同质人口组成的密切、守望相助、存在一种人情味的社会关系的社会团体。 后来,英国人把 Gemeischaft 翻译为Community。 这个词首先用于
域用户的正常用电。 所以在变电站设计时,应采用两台三绕组有载调压变压器,以满足灵活性和可靠性。 220KV 侧不带负荷,出于经济性和灵活性的考虑,采用双母线接线形式会满足要求; 110KV 侧负荷较多,为了满足供电的可靠性,采用双母线带旁路母线的接线形式会满足要求; 10KV 侧重要负荷较多,且带有站用负荷,出于可靠性和经济性的考虑,则采用单母线分段母线的接线形式会比较适合。 选题意义