3DES——密码学实验报告
- 格式:docx
- 大小:234.18 KB
- 文档页数:3
实验五 对称密码基本加密实验-DES 、3DES【 实验目的】理解对称密码体制和分组密码算法的基本思想理解 DES 、3DES 等算法的基本原理掌握上述密码算法的输入输出格式和密钥格式掌握上述密码算法的加解密过程和实现方法【实验原理】对称密码体制使用相同的加密密钥和解密密钥,其安全性主要依赖于密钥的保密性。
分组密码是对称密码体制的重要组成部分,其基本原理为:将明文消息编码后的序列m 0,m 1,m 2,…,m i 划分为长度为L(通常为64或128)位的组m=(m 0,m 1,m 2,…,m L-1),每组分别在密钥k=(k 0,k 1,k 2,…,k t-1)(密钥长度为t)的控制下变换成等长的一组密文输出序列c=(c 0,c 1,c 2,…,c L-1)。
分组密码的模型如下图所示: 加密算法m=(m 0,m 1,m 2,…,m L-1)明文分组密文分组c=( c 0,c 1,c 2,…,c L-1)012t-1012t-1m=(m 0,m 1,m 2,…,m L-1)明文分组加密算法分组密码实际上是在密钥的控制下,从一个足够大和足够好的置换子集中简单而迅速地选出一个置换,用来对当前输入的明文分组进行加密变换。
现在所使用的对称分组加密算法大多数都是基于Feistel 分组密码结构的,遵从的基本指导原则是Shannon 提出的扩散和混乱,扩散和混乱是分组密码的最本质操作。
分组密码与流密码的对比:分组密码以一定大小的分组作为每次处理的基本单元,而流密码则以一个元素(如一个字母或一个比特)作为基本的处理单元;流密码使用一个随时间变化的加密变换,具有转换速度快、低错误传播的优点,软硬件实现简单,缺点是低扩散、插入及修改不敏感;分组密码使用的是一个不对时间变化的固定变换,具有扩散性好、插入敏感等优点,缺点是加解密处理速度慢、存在错误传播。
一、 DES 算法数据加密标准(Data Encryption Standard,DES)中的算法是第一个也是最重要的现代对称加密算法,其分组长度为64比特,使用的密钥长度为56比特(实际上函数要求一个64位的密钥作为输入,但其中用到的有效长度只有56位,剩余8位可作为奇偶校验位或完全随意设置),DES 加解密过程类似,加解密使用同样的算法,唯一不同的是解密时子密钥的使用次序要反过来。
密码学实验报告中文汉字的密码化实验1. 实验简介本实验旨在通过对中文汉字的密码化实验,探究密码学在信息安全领域中的应用。
在本实验中,我们将使用替换密码技术对中文汉字进行加密和解密,并评估其安全性和实用性。
2. 实验步骤2.1 选择密钥在开始实验之前,我们需要选择一个密钥。
密钥是密码算法的关键,它用于对明文进行加密和解密。
在本实验中,我们选择一个包含所有中文汉字的密钥表。
该密钥表将用于替换明文中的汉字,从而实现密码化。
2.2 加密过程加密过程涉及将明文中的汉字替换为对应的密钥表中的汉字。
我们将使用一种称为替换密码的技术来实现加密。
具体步骤如下:步骤一:准备明文 - 选择一段中文汉字作为明文。
步骤二:选择密钥表 - 使用预先准备好的密钥表,其中包含了所有中文汉字的替换映射关系。
步骤三:替换汉字 - 将明文中的每个汉字根据密钥表中的映射进行替换。
步骤四:生成密文 - 将替换后的汉字按照顺序组成密文。
2.3 解密过程解密过程即将密文还原为明文。
在我们的实验中,解密过程与加密过程密切相关,因为它需要使用相同的密钥表进行替换。
具体步骤如下:步骤一:准备密文 - 选择加密过程生成的密文作为输入。
步骤二:选择密钥表 - 使用和加密过程相同的密钥表。
步骤三:替换汉字 - 将密文中的每个汉字根据密钥表中的映射进行替换。
步骤四:生成明文 - 将替换后的汉字按照顺序组成明文。
3. 实验结果与讨论在本实验中,我们选择了一段中文汉字作为明文,并使用已准备好的密钥表进行加密和解密操作。
经过多次实验,我们得到了一些实验结果和相应的讨论。
3.1 加密结果经过加密过程,我们得到了一段由密文组成的结果。
加密后的密文将替换明文中的汉字,使其具有一定的保密性。
然而,我们也发现了一些问题:问题一:密文长度增加 - 密文的长度通常会大于明文的长度,这可能导致在传输和存储过程中的一些问题。
问题二:密钥表可预测 - 由于我们使用了固定的密钥表,攻击者有可能通过分析密文和明文之间的关系来推断出密钥表的内容。
密码学实验报告信息安全实验报告学号:学生姓名:班级:实验三密码学实验一、古典密码算法实验一、实验目的通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。
二、编译环境运行windows 或linux 操作系统的PC 机,具有gcc、VC 等C语言编译环境。
三、实验原理古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。
它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。
下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。
1.替代密码替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替代后形成密文。
例如:明文字母a、b、c、d ,用D、E、F、G做对应替换后形成密文。
替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。
下面我们介绍一种典型的单表替代密码,恺撒密码,又叫循环移位密码。
它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代。
它的加密过程可以表示为下面的函数:E= mod n其中:m 为明文字母在字母表中的位置数;n 为字母表中的字母个数;k 为密钥;E为密文字母在字母表中对应的位置数。
例如,对于明文字母H,其在字母表中的位置数为8,设k=4,则按照上式计算出来的密文为L:E = mod n = mod 26 = 12 = L2.置换密码置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。
置换密码有时又称为换位密码。
矩阵换位法是实现置换密码的一种常用方法。
它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。
例如,明文为attack begins at five,密钥为cipher,将明文按照每行6 列的形式排在矩阵中,形成如下形式: a ttack b e gins a tfive根据密钥cipher中各字母在字母表中出现的先后顺序,给定一个置换: 1 2 3 4 5 6 f =1 4 5 32 6根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第5 列,第 3 列,第2列,第 6 列的顺序排列,则有下面形式: a a c t tk b i n g e s a I v f te从而得到密文:abatgftetcnvaiikse其解密的过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。
JI A N G S U U N I V E R S I T Y 2017-2018学年第1学期密码学课程设计学院名称:计算机科学与通信工程学院班级学号:学生姓名:指导老师:一、实验要求:问题描述:编程实现3DES算法。
从DES原理出发,设计3DES加解密过程;通过编程调试以实现3DES 算法;利用由学生本人的学号姓名等信息组成若干密钥,以及明文样本进行加解密测试;最后作总结。
要求:(1)设计良好的交互界面,如要求用户输入密钥、明文字符串、得到相应的解密字符串等。
(2)程序设计,编写相应程序并调试。
(3)试用验证,记录每次操作过程和系统的结果。
(4)分析相应的问题。
(5)编写课程设计报告。
二、实验过程及分析:算法简介:3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。
它相当于是对每个数据块应用三次DES加密算法。
由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。
算法介绍:3DES又称Triple DES,是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密。
数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法,并于1981年被ANSI组织规范为ANSI X.3.92。
DES使用56位密钥和密码块的方法,而在密码块的方法中,文本被分成64位大小的文本块然后再进行加密。
比起最初的DES,3DES更为安全。
3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,M代表明文,C代表密文,这样:3DES加密过程为:C=Ek3(Dk2(Ek1(M)))3DES解密过程为:M=Dk1(EK2(Dk3(C)))代码实现:我是先用C++将单重DES的算法编译出来,然后再进行三重DES算法,界面是利用MFC编写的一个简单的交互界面,实现对明文的加解密操作,主要的困难是在算法的编写上,在密文的输出形式上花费了许多时间,因为要实现三重加密,而每次明文的输入都必须是字符数组的类型,而第二三次的明文是利用前一次的密文,所以所输出的密文也必须是字符数组类型,有些转换的小问题费了一些功夫;在实现界面的时候CString类型对char类型的数组转换也出了一些问题,不过实验了几个不同的方式还是成功的解决了类型转换的问题,之后就是简单的调用加解密函数进行操作就好了。
3DES加解密算法报告一、3DES算法简介3DES又称Triple DES,是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密。
数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法,并于1981年被ANSI组织规范为ANSI X.3.92。
DES使用56位密钥和密码块的方法,而在密码块的方法中,文本被分成64位大小的文本块然后再进行加密。
比起最初的DES,3DES更为安全。
3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES 指定为过渡的加密标准),是DES的一个更安全的变形。
它以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文,这样,设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密表,这样,3DES加密过程为:C=Ek3(Dk2(Ek1(P)))3DES解密过程为:P=Dk1((EK2(Dk3(C)))二、3DES程序运行界面加密时,指定要加密的文件路径、加密的密钥以及加密后的文件名。
加密后的文件,打开时,显示的是乱码。
解密时指定要解密的文件路径、解密密钥(确保与加密密钥相同)以及解密后文件的名字。
解密后,打开解密后的文件,显示正确的字符,解密成功。
三、3DES程序的函数和类1.void SDES(char Out[8], char In[8], const PSubKey pSubKey, bool Type) DES加密函数2. bool DES::Execution_3DES(char *Out, char *In, long datalen, const char *Key, int keylen,bool Type) 3DES加密函数3. void CMy3DES_Encryption_DecryptionDlg::OnButton2() 对话框加密按钮函数,调用加密函数4. void CMy3DES_Encryption_DecryptionDlg::OnButton3() 对话框解密按钮函数,调用加密函数进行解密5.void CMy3DES_Encryption_DecryptionDlg::OnButton1() //获取源文件路径和文件名四、3DES程序的主要函数注释1、以下的两个函数为对明文进行加解密,使用两个密钥做三次加密,方式为加密-解密-加密。
智能卡技术实验报告学院:电子工程学院班级:2011211204姓名:学号:2011210986实验四 Java卡对称加密解密程序一、实验目的:建立Java卡3DES算法的加密解密程序,并进行Java卡程序的编译和调测。
二、实验设备:PC机,智能卡读卡器,Java卡。
三、实验内容:1.建立一个JavaCard工程2.编写3DES算法的加解密应用代码3.使用智能卡模拟器对应用代码进行调试4.使用Java卡对应用代码进行编译测试四、实验报告:1.设计一个3DES算法的加密解密小应用程序2.画出系统结构图和各部分程序流程图3.完成程序的开发,然后再在Java卡上进行验证五、流程图系统结构流程:各部分流程图1)产生随机明文流程图2)3DES加密流程图3)3DES解密流程图六、演示模拟器随机产生8字节的明文:D4AA3503EC117A56,用时:1113us加密,密文:DCC74C5B43340FB7,用时:8445us解密,用时:6338us插卡产生明文:09FED7DA8FC3B90F,用时:83990us加密,产生密文:A447987D6FF5CC2C,用时:682482us解密,用时:641494us可以看出,插卡后比直接用模拟器,加密解密的时间长了很多。
七、实验总结通过本次智能卡实验,我了解了对称加密的一些相关概念与知识,并学会了如何在智能卡上实现对称加解密。
八、源代码package desthree;import javacard.framework.*;import javacard.security.*;import javacardx.crypto.*;public class Desthree extends Applet{byte [] Random;byte [] ciphertext=new byte[256];byte [] translation=new byte[256];private DESKey deskey;Cipher CipherObj;private byte [] keyData1={0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};//密钥private byte [] keyData2={0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18};private byte [] keyData3={0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28};protected Desthree(){register();}public static void install(byte [] bArray, short bOffset, byte bLength){new Desthree();}public void process(APDU apdu)throws ISOException{byte [] buffer = apdu.getBuffer();if((buffer[ISO7816.OFFSET_CLA])==0 && (buffer[ISO7816.OFFSET_INS])==(byte)(0xa4))return;if(buffer[ISO7816.OFFSET_INS]==(byte)0x84){getRandom();//返回生成的8字节随机数Util.arrayCopyNonAtomic(Random, (short)0, buffer, (short)0, (short)8);apdu.setOutgoingAndSend((short)0,(short)8);}if(buffer[ISO7816.OFFSET_INS]==(byte)0x83){apdu.setIncomingAndReceive();encrypt(buffer); //加密Util.arrayCopyNonAtomic(ciphertext, (short)16, buffer, (short)0, (short)8);apdu.setOutgoingAndSend((short)0,(short)8);}if(buffer[ISO7816.OFFSET_INS]==(byte)0x82){apdu.setIncomingAndReceive();doAuthentication(buffer); //解密}}//执行加密过程的代码private void encrypt(byte [] buffer){deskey = (DESKey)KeyBuilder.buildKey(KeyBuilder.TYPE_DES,KeyBuilder.LENGTH_DES,false);deskey.setKey(keyData1, (short)0);CipherObj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(deskey, Cipher.MODE_ENCRYPT);CipherObj.doFinal(buffer, (short)5, (short)8, ciphertext, (short)0);deskey.setKey(keyData2, (short)0);CipherObj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(deskey, Cipher.MODE_DECRYPT);CipherObj.doFinal(ciphertext, (short)0, (short)8, ciphertext, (short)8);deskey.setKey(keyData3, (short)0);CipherObj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(deskey, Cipher.MODE_ENCRYPT);CipherObj.doFinal(ciphertext, (short)8, (short)8, ciphertext, (short)16);}//执行解密过程的代码private void doAuthentication(byte [] buffer){deskey = (DESKey)KeyBuilder.buildKey(KeyBuilder.TYPE_DES,KeyBuilder.LENGTH_DES,false);deskey.setKey(keyData3, (short)0);CipherObj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(deskey, Cipher.MODE_DECRYPT);CipherObj.doFinal(buffer, (short)5, (short)8, translation, (short)0);deskey.setKey(keyData2, (short)0);CipherObj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(deskey, Cipher.MODE_ENCRYPT);CipherObj.doFinal(translation, (short)0, (short)8, translation, (short)8);deskey.setKey(keyData1, (short)0);CipherObj = Cipher.getInstance(Cipher.ALG_DES_CBC_ISO9797_M1, false);CipherObj.init(deskey, Cipher.MODE_DECRYPT);CipherObj.doFinal(translation, (short)8, (short)8, translation, (short)16);if(Util.arrayCompare(translation, (short)16, Random, (short)0, (short)8)!=0)ISOException.throwIt(ISO7816.SW_SECURITY_STATUS_NOT_SATISFIED);}//获取随机数private void getRandom(){if(Random==null)Random = JCSystem.makeTransientByteArray((short)8,JCSystem.CLEAR_ON_DESELECT);RandomData ICC = RandomData.getInstance((byte)RandomData.ALG_PSEUDO_RANDOM);ICC.setSeed(Random, (short)0, (short)8);ICC.generateData(Random, (short)0, (short)8);}}。
3DES 加密算法的设计与实现宋佳河海大学水文水资源学院,南京(210098)E-mail:********************摘要:数据加密标准DES(Data Encryption Standard)是美国国家标准局于1977 年公布的数据加密标准,二十多年来,它一直在数据加密方面扮演了十分重要的角色,可见其设计思想的缜密和精细。
虽然随着解密技术的发展,DES 的安全性受到了一定的威胁,但其改进的3DES 算法却在很大程度弥补了DES 算法的缺陷,因此在数据加密方面得到了很广泛的应用。
本课题对3DES 算法进行分析和研究,并在此基础上用C 语言实现该算法,最终设计一个能对数据分组和文件进行高效加密的加密软件,为用户提供一种保证数据安全的方法。
关键词:数据加密标准DES;3DES;C 语言;实现中图分类号:TP309.7 文献标识码:A1 引言数据加密标准DES(Date Encryption Standard),是上个世纪70 年代问世的基于64 位明文分组,密钥长度为48×16 的加密标准。
随着计算机网络技术的发展,越来越多的信息都借助于网络来进行传输。
然而,黑客的出现使得信息在网络传输过程中受到各种各样的威胁、干扰和破坏,这不但影响了信息的有效传递,而且也可能由于信息的破坏给用户或者国家造成重大的损失。
为了杜绝或降低这种损失,利用加密技术对数据信息进行加密是一种有效的手段和方法。
而基于数据加密标准的DES(Date Encryption Standard)的三重DES(即3DES)有着高强度加密安全性能,且3DES 设计标准不一而足,有采用2 组密钥三重加密(本文就采取了这种方法),有采用三组加密密钥三重加密的。
然而由于它是基于DES 的三重加密,速度上自然不容乐观,但对DES 以及三重DES 的深入分析和理解,有利于研究和设计更好的密码算法,从而在一定程度上促进密码学的研究和发展。
第1篇一、实验背景密码学是一门研究信息加密与解密的学科,它广泛应用于信息安全领域。
为了更好地理解密码学的基本原理和算法,我们选择了实验吧平台上的密码学实验进行学习。
本次实验旨在通过实际操作,加深对古典密码、对称密码和不对称密码等密码学基本概念的理解,提高密码学应用能力。
二、实验目的1. 理解并掌握古典密码的基本原理和算法;2. 掌握对称密码和不对称密码的基本原理和算法;3. 通过实验操作,提高密码学应用能力;4. 培养团队协作和解决问题的能力。
三、实验内容1. 古典密码实验(1)仿射密码原理:仿射密码是一种单字母替换密码,加密公式为:C = (aP + b) mod 26,其中C为密文字母,P为明文字母,a和b为密钥。
操作步骤:1)编写加密函数encrypt,实现仿射密码加密;2)编写解密函数decrypt,实现仿射密码解密;3)测试加密和解密函数,验证其正确性。
(2)单表代替密码原理:单表代替密码是一种将明文字符映射到密文字符的替换密码。
操作步骤:1)编写加密函数subencrypt,实现单表代替密码加密;2)编写解密函数subdecrypt,实现单表代替密码解密;3)测试加密和解密函数,验证其正确性。
(3)维吉尼亚密码原理:维吉尼亚密码是一种多字母替换密码,加密公式为:C = (P + K[i]) mod 26,其中C为密文字母,P为明文字母,K为密钥,i为索引。
操作步骤:1)编写加密函数vigenereencrypt,实现维吉尼亚密码加密;2)编写解密函数vigeneredecrypt,实现维吉尼亚密码解密;3)测试加密和解密函数,验证其正确性。
2. 对称密码实验(1)DES加密算法原理:DES(Data Encryption Standard)是一种分组加密算法,采用56位密钥,64位分组。
操作步骤:1)编写DES加密函数desencrypt,实现DES加密;2)编写DES解密函数desdecrypt,实现DES解密;3)测试加密和解密函数,验证其正确性。
一、实验目的1. 理解并掌握常见的加密算法和密码体制的基本原理。
2. 学会使用密码学工具进行加密和解密操作。
3. 增强网络安全意识,提高对密码学在实际应用中的认识。
二、实验内容1. 仿射密码2. 单表代替密码3. 维吉尼亚密码4. AES加密算法三、实验原理1. 仿射密码:加密原理为将明文进行0~25字母编码,按照加密公式计算出密文对应位置的字母编码,最后从密文的字母编码还原出密文对应位置的字母。
解密原理与加密原理相反。
2. 单表代替密码:加密原理为利用代替表,将明文中的每个字符映射到密文。
解密原理为对代替表进行反向查找,由密文映射回明文。
3. 维吉尼亚密码:加密原理为通过加密方程Ci (pi k(i mod m)) mod 26,由明文得到密文。
解密原理为解密过程是加密过程的逆过程,通过解密方程pi (Cik(i mod m)) mod 26。
4. AES加密算法:是一种分组加密算法,将128位明文分为128位的数据块,使用密钥进行加密,得到128位的密文。
解密过程与加密过程相反。
四、实验步骤1. 仿射密码(1)选择明文:选择一段英文或数字,例如:"Hello World!"(2)选择密钥:选择一个密钥a和模数m,例如:a=5,m=26。
(3)加密:将明文进行0~25字母编码,按照加密公式计算出密文对应位置的字母编码,最后从密文的字母编码还原出密文对应位置的字母。
(4)解密:将密文进行0~25字母编码,按照解密公式计算出明文对应位置的字母编码,最后从明文的字母编码还原出明文对应位置的字母。
2. 单表代替密码(1)构造代替表:选择一个代替表,将明文中的每个字符映射到密文。
(2)加密:将明文中的每个字符按照代替表进行映射,得到密文。
(3)解密:将密文中的每个字符按照代替表的逆映射,得到明文。
3. 维吉尼亚密码(1)选择密钥:选择一个密钥,例如:"KEY"(2)加密:将明文和密钥进行异或操作,得到密文。
实验报告
【实验名称】DES单步加密实验
姓名:学号:班级:日期:9月29日
【实验目的】
1.掌握DES算法的基本原理
2.了解DES算法的详细步骤
【实验环境】
1.本试验需要密码教学实验系统的支持
2.操作系统为Windows 2000或者Windows XP
【实验内容】
1.掌握DES算法的原理及过程
2.完成DES密钥扩展运算
3.完成DES数据加密运算
【实验步骤】
1.打开“DES理论学习”,掌握DES算法的加解密原理;
2.打开“DES算法流程”,开始DES单步加密实验,如图10-1;
3.选择密钥输入为ASCII码或十六进制码模式,输入密钥;若为ASCII码模式,则输入
8个字符的ASCII码;若为十六进制码模式,则输入16个字符的十六进制码(0~9,a~f,A~F);
4.点击“比特流”按钮,将输入的密钥转化为64位比特流;
5.点击“置换选择I”按钮,完成置换选择I运算,得到56bit有效密钥位,并分为左
右两部分,各28bit;
6.点击C0下的“循环左移”按钮,对C0进行循环左移运算;
7.点击D0下的“循环左移”按钮,对D0进行循环左移运算;
8.点击“选择置换II”按钮,得到扩展子密钥K1;
9.进入第二部分——加密,选择加密输入为ASCII码或十六进制码模式,输入明文;
若为ASCII码模式,则输入8个字符的ASCII码;若为十六进制码模式,则输入16个字符的十六进制码(0~9,a~f,A~F);
10.点击“比特流”按钮,将输入明文转化为64位比特流;
11.点击“初始IP置换”按钮,将64bit明文进行IP置换运算,得到左右两部分,各
32bit;
12.点击“选择运算E”按钮,将右32bit扩展为48bit;
13.点击“异或运算”按钮,将扩展的48bit与子密钥K1进行按位异或;
14.依次点击“S1”、“S2”、“S3”、“S4”、“S5”、“S6”、“S7”、“S8”按
钮,对中间结果分组后进行S盒运算;
15.点击“置换运算P”按钮,对S盒运算结果进行P置换运算;
16.点击“异或运算”按钮,将P置换运算结果与L0进行按位异或,得到R1;
17.点击“逆初始置换IP_1”按钮,得到最终的加密结果。
【实验心得】
此前都是理论上的学习,通过这次实验和自己动手上机,对DES算法的基本原理和详细步骤有了更为清晰的认识,通过对DES的了解,在此基础上,也有助于对于多重DES的理解。
只是试验中一些运算是直接给出的结果,中间的具体计算已经省略,依旧需要我们参考理论知识和书本来加深理解。
【实验思考】
1.DES算法中大量的置换运算的作用是什么?
保证明文在短时间内补呗暴力破解
2.DES算法中S盒变换的作用是什么?
将48bit数据变为32bit数据。