信息安全实验

本文介绍了基于3DES加解密算法的编程实现,涉及DES加密与解密、填充方式选择、CBC模式以及文件操作。实验任务包括将二进制转换为十六进制,以及分析重要函数和绘制流程图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验内容:基于3DE加解密算法,编程实现对任意文件实现加解密的软件。

一、编程实现DES加密和解密算法,并使用DES加解密算法实现3DES加解密算法

二、选择一种填充方式,对需要加密的文件进行填充(解密要去掉填充部分),可以选择的填充方法参考https://www.jianshu.com/p/16e1cbc0b7a9

三、DES的加解密的工作模式,采用密码分组链接(CBC)模式

四、读取/写入被加密/解密文件时,采用字节流的形式进行文件读取/写入(字节流的查看,可以使用UltraEdit的十六进制查看模式,一款功能强大实用的专业文本编辑器,可以轻松的查看十六进制)

完成实验后,需要提交实验报告(包括:重要函数的功能分析和流程图)

  1、DES算法的入口参数有三个: Key、Data、Mode。

      其中Key为8个字节共64位,是DES算法的工作密钥;

        Data也为8个字节64位,是要被加密或被解密的数据;

        Mode为DES的工作方式,有两种:加密或解密。
      2、DES算法过程:

  如果mode为加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;

  如果mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。

  3、DES算法步骤

       DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位(实际用到了56位,第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),其算法主要分为两步:
   ①初始置换
       其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为: L0=D58D50……D8;R0=D57D49……D7。
    其置换规则见下表:
    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
   ②逆置换
     经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。
     此算法是对称加密算法体系中的代表,在计算机网络系统中广泛使用。

4、DES算法实现
    见 "三、算法实现"

二、3DES算法

       3DES(又称Triple DES),是进行了三重数据加密,即:每个数据块进行了三次DES加密算法,使用3条64位的密钥对数据进行三次加密,故比DES加密更为安全,更难破解。

   1、加密算法,其具体实现如下:

      设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,M代表明文,C代表密文:
        3DES加密过程为:C=Ek3(Dk2(Ek1(M)))
        3DES解密过程为:M=Dk1(EK2(Dk3(C)))

      注:K1、K2、K3决定了算法的安全性,若三个密钥互不相同,本质上就相当于用一个长为168位的密钥进行加密。多年来,它在对付强力攻击时是比较安全的。若数据对安全性要求不那么高,K1可以等于K3。在这种情况下,密钥的有效长度为112位。
 

已经实现将十六进制转为二进制。

输入为16位的十六进制表示的密钥和明文,输出16位的十六进制表示的密文。

明天实验课的任务:

将二进制再转为十六进制?或者是将字节流直接转为十六进制?(先解决这个问题,输入输出的问题,再研究重要和函数及其画出流程图)

参考下面的例子:

DES与3DES 加解密实例(c++)_武倔的博客-优快云博客

老师给的例子:DES与3DES 加解密实例(c++)_武倔的博客-优快云博客_des加密mp3

64位的二进制,表格中用十六进制表示。

私钥明文密文
000000000000000000000000000000008CA64DE9C1B123A7

实验名称: DES算法编程实现 一、实验概述: DES是美国国家标准技术研究所NIST于1977年制定的分组密码的加密标准,广泛应用于商用数据加密。尽管目前逐渐为AES算法所替代,但作为第一个被公布出来的标准算法,对现代分组密码理论的发展和应用起了奠基性作用,其基本理论和设计思想仍有重要参考价值。DES采用对称分组密码体制,数据块分组长度为64比特,密钥长度是56比特,若输入64比特,则有8个比特用于奇偶校验位。 二、实验目的: 1、 理解分组加密算法的原理和特点 2、 掌握DES算法的加密原理 三、实验原理: DES算法是一种典型的明文块加密标准一一一种将固定长度的明文通过一系列复杂的操作变成同样长度的密文的算法。 对DES而言,块长度为64位。同时,DES使用密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。密钥表面上是64位的,然而只有其中的56位被实际用于算法,其余8位可以被用于奇偶校验,并在算法中 被丢弃。因此,DES的有效密钥长度为56位,通常称DES的密钥长度为56位。 与其它加密算法相似,DES自身并不是加密的实用手段,而必须以某种工作模式进行实际操作。 DES同时使用了代换和置换两种技巧,整个过程分为两大部分: 1,加密过程; 2,子密钥产生过程。 需要注意的是,DES算法的计算结果与其运作的平台上的编码、所选的加密模式、填充模式等密切相关,所以不同的软件针对同一密文、同一密钥解密出来的结果可能是不一样的,这与计算的正确性无关。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值