




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息工程专业课程实验指导书一、信息论与编码课程实验指导书; 实验1 Huffman 编码(4 学时) 一、实验目的 1复习C+程序基本编写方法,熟悉VC 编程环境。 2会用VC 调试Huffman 编码程序。 二、实验内容 1复习C+代码基本语法(结构体、树等数据结构定义) 2根据Huffman 编码源代码,学习算法实现流程,培养自己动手能力,在C+编译器下按步调试跟踪算法。 三、实验仪器、设备 1计算机系统最低配置 256M 内存、P4 CPU。 2C+ 编程软件 Visual C+ 7.0 (Microsoft Visual Studio 2003) Visual C+ 8.0 (Microsoft Visual Studio 2005) 四、实验原理 1 Huffman 编码原理: 将信源符号按概率从大到小的顺序排列,令 p(x1) p(x2) p(xn) 给两个概率最小的信源符号p(xn-1)和p(xn)各分配一个码位“0”和“1”,将这两个信源符号合并成一个新符号,并用这两个最小的概率之和作为新符号的概率, 结果得到一个只包含(n1)个信源符号的新信源。称为信源的第一次缩减信源, 用S1表示。 将缩减信源S1的符号仍按概率从大到小顺序排列,重复步骤2,得到只含(n2)个符号的缩减信源S2。 重复上述步骤,直至缩减信源只剩两个符号为止,此时所剩两个符号的概率之和必为1。然后从最后一级缩减信源开始,依编码路径向前返回,就得到各 信源符号所对应的码字。 2Huffman 树的编码原理: 步骤1: 将各个符号及其出现频率分别作为不同的小二叉树(目前每棵树只有根节点) 步骤2: 在步骤1中得到的树林里找出频率值最小的两棵树,将他们分别作为左、右子树连成一棵大一些的二叉树,该二叉树的频率值设为两棵子树频率值 之和。 步骤3:对上面得到的树林重复步骤2的做法,直到所有符号都连入树中为止。 五、实验步骤 1VC 环境下,建一个C+控制台应用程序,并把源代码考到该程序目录下。 2项目文件中含有一个预编译头文件,一个主函数入口文件和Huffman 编码算法文件。 3在入口文件中,输入任一个离散信源进行编码调试。 4设置好程序断点,仔细分析Huffman 树每步的建立过程。 5输出离散信源中每个符号的Huffman 编码,并与手工运算的结果进行比较。 六、实验报告要求 1 按照实验一附 3 中实验报告样式书写本次实验报告。2 总结 C+语言学习心得,并结合Huffman 编码实验总结自己的得失,指出今后自己要练习改进之处。根据自己实验情况,对本实验写出建议。 七、实验注意事项 1指针数据结构定义 typedef struct unsigned long weight; int parent, lchild, rchild; HTNode, *HuffmanTree; typedef char* HuffmanCode; / 指向存放数组指针的数组即二维数组 2二叉树生成操作放在数组中(节点n 和数组大小m 关系为:m=2*n-1)。每次在树中找到两颗最小子树,其函数为Select(HuffmanTree HT, int n, int *s1, int *s2),实际实现的是在数组中找到最小两个元素。另外注意C+的数组起始索引是0,Matlab 起始索引是1;程序中为了方便从1 开始索引数组,HT0.weight 的大小设为0xffffffffL。为了输出二进制Huffman 码,程序最后对每个符号进行深度优先搜索,得到该符号的二进制字符,然后进行字符串拷贝,直到最后输出。实验二 CRC 校验码编码实验(4 学时) 一、实验目的 1学习CRC 编码基本流程, 学会调试循环冗余校验码编码程序。 2掌握CRC 校验码的编码原理,重点掌握按字节(Byte)编码方法。 二、实验内容 1根据实验原理掌握CRC 校验码编码/解码基本流程。 2在C+编译器下能够调试编码算法每一个步骤,重点掌握按字节编码的过程。 三、实验仪器、设备 1计算机系统最低配置 256M 内存、P4 CPU。 2C+ 编程软件 Visual C+ 7.0 (Microsoft Visual Studio 2003) Visual C+ 8.0 (Microsoft Visual Studio 2005) 四、实验原理 1 CRC 校验码介绍 CRC 校验的基本思想是利用线性编码理论,在发送端根据要传送的k 位二进制码序列,以一定的规则产生一个校验用的监督码(CRC 码)r 位,并附在信息后边,构成一个新的二进制码序列数共 (k+r) 位,最后发送出去。在接收端,则根据信息码和CRC 码之间所遵循的规则进行检验,以确定传送中是否出错。 16 位的CRC 码产生的规则是先将要发送的二进制序列数左移16 位(乘以216)后,再除以一个多项式,最后所得到的余数既是CRC 码。求CRC 码所采用模2 加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。接收方将接收到的二进制序列数(包括信息码和CRC 码)除以多项式,如果余数为0,则说明传输中无错误发生,否则说明传输有误。 2按位计算CRC 一个二进制序列数可以表示为 求此二进制序列数的CRC 码时,先乘以216后(左移16位),再除以多项式G(X) , 所得的余数就是所要求的CRC 码。 可以设: 其中Q n (X) 为整数, R n (X) 为16位二进制余数,将上式代入前式得:再设:其中Qn-1(X) 为整数, Rn-1(X) 为16位二进制余数,继续代入前式,多次迭代得到: 根据 CRC 的定义,很显然,十六位二进制数R0(X) 即是要求的CRC 码。 3按字节计算CRC 对于一个二进制序列数可以按字节表示为下式,其中Bn(X) 为一个字节(共8 位): 求此二进制序列数的CRC码时,先乘以216后(左移16位),再除以多项式G(X),所得的余数即是所要求的CRC 码。 可以设: 其中Qn(X) 为整数, Rn(X) 为16位二进制余数,将上式代入前式得: 由于:其中RnH8(X) 是Rn(X)的高八位, RnL8(X)是Rn(X)的低八位,代入前式得到: 显然,十六位二进制数R0(X)即是要求的CRC码。 五、实验步骤 项目文件建立步骤同实验二,下面列出对给定字符串 CRC 校验主要步骤: 步骤 1:从主函数入口输入一个字符串,并且确定按字节32 位CRC 校验编码,编码多项式采用CCITT 标准形式多项式。 步骤 2:调用编码函数,依次读入字符串每个自己,进行模2 除法运算。 步骤 3:将原来字符串左移32 位,将除法最后的余式追加到字符串的后32 位中去,得到该字符串CRC 校验编码结果。 步骤 4:如果要解码,首先确认编码多项式,然后将接收字符串除以编码多项式。如果能够整除,说明字符串在传输或存储中没有发生错误;否则,表明字 符串在传输或存储中产生错误,导致CRC 校验失败。 六、实验报告要求 1 按照实验一附 3 中实验报告样式提交本次实验报告。 2 要求写出 CRC 校验编码学习心得,最好是能够结合硬件设计谈一下校验编码的设计体会。根据自己实验情况,写出自己的做实验中遇到的具体问题,对本实验提出建议。 七、实验注意事项 1几个重要概念在实验前一定搞清楚: 1) 模 2 加减法 = 异或(XOR)。 2) 多项式的表示方法。 3) CRC 校验的基本理论 a 可以参考前面文中的推导。 b 自己通过一个除法运算推导。 4) 常用的两种方法: a Bit 长度运算 b Byte 长度运算(可以将字节除法余式表保存下来,通过查表,计算比较快) 2. 程序设计时注意内容: 1) 注意检查字节输入顺序与多项式的关系 a 高字节前,低字节后,采用通常理论推导公式编写程序。 b 低字节前,高字节后,采用向右移位方式。(这是数据通信中常用方式,多项式采用反转多项式,添加余式时注意低位在前,高位在后) 2) 注意寄存器初始值选择 CCITT 和CRC32 如果用在通信中,常采用初始值为0xffff 或0xffffffffL,可以开始纠正数字通信中几个bit 连续为0 的情况。为保持其输出和采用初始值为 0xffff 或0xffffffffL 一致,最后CRC 校验值要与0xffff 或0xffffffffL 进行异或运算(XOR)得到最终CRC 校验码。实验三 典型信道容量计算方法实现实验目的掌握用递推算法计算典型信道的容量的方法。实验学时2学时实验准备1熟悉二进信道的概率转移矩阵表示,掌握信道容量的递推算法,设计用递推算法计算二进信道容量的数据结构和算法;2编写用递推算法计算二进信道容量的书面程序代码。实验内容及步骤用递推算法计算二进信道的容量说明:(1)构造各种二进信道的概率转移矩阵;(2)用递推算法计算各种二进信道的容量;(3)不断调整误差精度对系统进行测试,并进行对比分析;(4)编写本次实验的实验报告。二、信息网络系统课程实验指导书;实验一网络简单观察实验一、实验目的1. 观察了解网卡、线缆、集线器等设备;2. 了解WINDOWS中的网络组成及参数;3. 了解通过TCP/IP协议连接上网的方法;4. 了解Ethereal软件的作用,以及利用Ethereal软件捕获、查看网络数据包的方法。二、 原理概述Ethereal是一个免费的网络协议分析软件,支持Linux、Windows等多种平台。由于网络上产生的数据包很多,通常我们只对其中一部分数据包感兴趣,因此在捕捉具体的数据包之前需要定义一个过滤器(filter),以滤除不需要的信息。一个过滤器实质上是一组规则,只有收到的数据满足规则时才保存,否则丢弃。过滤器通常可以是多个规则的逻辑组合。在Ethereal中捕捉数据包前,首先要选择要监听的接口。点击菜单中“Capture” “Interface”,此处选择接口“NDIS5 Driver”。在捕捉前还要设置一些参数,如过滤器。点击“prepare”,出现设置窗口,在“Capture Filter”一栏中填写感兴趣的数据包对应规则(见使用手册)。点击“Start”按钮开始捕捉。打开浏览器访问一些站点后,然后关闭浏览器,最后点击“Stop”按钮,结束数据包的捕捉。所有捕捉的数据包都显示在主窗口中。窗口中上面的列表框为所有捕获数据包(帧)的列表,记录了这些数据包的捕获时间、来源、目的地、协议等信息。中间的文本框为当前选中的捕获帧经Ethereal解释后的协议信息。屏幕最下面的窗口中以二进制形式显示当前选中的数据包的原始内容。如果需要保存所捕获的数据,可选择菜单“File”中的“Save as”进行保存。Ethereal支持多种文件格式。三、 实验内容1. 了解网卡的配置情况;2. 了解对等网的相关数据;3. 了解TCP/IP协议的相关参数配置;4. 阅读Ethereal软件的相关使用手册。四、 实验方法1. 实验原理计算机1计算机2以太网交换机计算机3 本实验是是在实验室的基于WINDOWS的网络上,观察网络的硬件软件,和相关的网络参数,并可以进行进一步的上网和共享硬盘等网络应用。见下图。2. 实验步骤步骤1: 实验前准备在实验前已经建立计算机网络,并已经设定好网络设备参数及相关协议,如:TCP/IP等。步骤2:读取网络相关数据l 网络组件 打开计算机电源,启动WINDOWS操作系统,右击“我的电脑” “属性”“硬件” “设备管理器”“网络适配器”的顺序,了解网卡类型、中断请求、内存范围、输入输出范围的参数。l 网络协议 按“控制面板”“网络和Internet连接”“网络连接” “本地连接” “属性”的顺序,了解“已安装的网络组件”中的协议,并读出TCP/IP协议的设置参数(IP地址、子网掩码、网关、DNS配置等)。步骤3:计算机标识 右击“我的电脑” “属性”,了解计算机名称、工作组等数据。步骤4:上网及共享数据u 使用IE浏览器上网,URL地址: HTTP:/;u 使用“网上邻居”,观看相邻计算机。步骤5:试运行Ethereal软件1) 查看本主机的IP地址2) 启动Ethereal,设置过滤器(1) 在桌面或开始菜单中选择Ethereal图标,双击运行。(2) 选择菜单“Capture” “Interfaces.” “prepare”。(3) 在“Interface”下拉列表框里选中要监视的本地网络适配器。(4) 设置包捕捉过滤器为“host (本主机的IP地址)”,例如:若IP地址为,则设置包捕捉过滤器为“host ”(5) 点击“Start”按钮开始捕捉数据包。(6) 打开浏览器,在地址栏中输入“/”(7) 点击“Stop”按钮停止数据包捕捉。3) 查看并保存所捕获的数据包(1) 在Ethereal软件中查看所有窗口显示的内容;(2) 双击最上面的窗口中的一栏。观察中间窗口中的有关显示;(3) 在最下面的窗口中查看捕获的数据包中的原始数据;(4) 选择菜单“File” “Save as”,将有关数据保存在文件中。4) 设置过滤器,记录主机在浏览网页过程中产生的所有HTTP数据包(1) 设置包捕捉过滤器为 “tcp port 808”或者“tcp port 80”(2) 点击“Start”按钮开始捕捉数据包。(3) 打开浏览器,在地址栏中输入/(4) 点击“Stop”按钮停止数据包捕捉。5) 查看并保存所捕获的数据包(1) 在Ethereal软件中查看所有窗口显示的内容,比较此次捕获的数据和上述数据有何不同;(2) 选择菜单“File” “Save as”,将有关数据保存在文件中。五、 实验报告要求1. 记录实验步骤2和步骤3中观察到的相关数据;2. 记录实验步骤5中两次捕获数据包的数量及有关类型;按时间次序记录所有数据包的有关信息,如source、destination、protocol以及info等各字段信息。实验二 物理层和数据链路层一、 实验目的1. 了解以太网协议2. 利用Ethereal软件观察以太帧的结构二、 原理概述以太网(Ethernet)是现有局域网采用的最通用的通信协议标准。Xerox、DEC和Intel公司与1980年联合起草了以太网标准,并于1982年发表了第2版的以太网标准(Ethernet II)。1985年,IEEE802委员会吸收以太网为IEEE802.3标准。以太网为广播网络,采用CSMA/CD(载波监听多路访问/碰撞检测)技术来解决信道共享问题。Ethernet II 帧格式如图2.1所示。不及前导、帧起始及校验字节,以太帧长最大为1514字节,其中数据部分最大为1500字节。以太帧最短为64字节,不足部分填充0。7字节 1字节 6字节 6字节 2字节 1 1500字节 046字节 4字节 前导帧起始目的地址源地址类型数据填充CRC校验 图2.1 以太帧格式以太帧头为14字节,包括6字节目的地址、6字节源地址和2字节类型。以太网地址(即MAC地址)用于唯一地表示网络设备。MAC地址48位6个字节,常用冒号隔开的十六进制来表示,如00:d0:f8:38:a2:06,其中前24位生产厂商代码。如果MAC地址全部为1,则表示广播地址。正常情况下,当网络设备监听到目的MAC地址是自己需要的数据帧或广播帧时,就会接收该帧,否则丢弃。以太帧中2字节类型域表示封装的上层数据协议类型。如IP协议为“0800”。三、 实验内容利用Ethereal来观察ping命令中产生的以太数据帧的结构。四、 实验步骤1. 查看本主机的IP地址2. 启动Ethereal,设置过滤器1) 在本主机的桌面或开始菜单中选择Ethereal图标,双击运行。2) 选择菜单“Capture” “Interfaces.” “prepare”。3) 在“Interface”下拉列表框里选中要监视的本地网络适配器。4) 设置包捕捉过滤器为“host (本主机的IP地址)”,例如:若IP地址为,则设置包捕捉过滤器为“host ”5) 点击“Start”按钮开始捕捉数据包。3. 在本主机上用ping命令访问另一台主机在本主机的命令窗口下输入:ping (另一台主机的IP地址)例如:ping 004. 停止数据包捕捉点击Etherreal的捕捉窗口中的“Stop”按钮。5. 查看捕获的数据包1) 在Ethereal中查看所有的窗口显示内容。2) 查看以太帧中目的地址和源地址。3) 查看捕获的以太帧中“类型”的字段有哪些。4) 保存捕获结果。五、 实验报告要求记录ping命令中产生的以太帧及其类型。六、 思考1. 网络上传输的数据字节次序和本地计算机中数据一样吗?观察以太帧中地址是如何传送的(最高字节先发送还是后发送)?2. 以太帧中有7个字节的前导、1个字节的起始帧字节和4个字节的校验字节,而在Ethereal捕获的数据帧有这几项吗?3. 以太帧中最短帧长是多大,最大帧长为多大?在以太帧中填充域的作用是什么?4. 在全世界范围内,任何机器是否需要一个唯一的MAC地址?5. 以太网中发送数据产生冲突时,如何解决?查看Ethereal中接口上发送数据的统计信息。6. 以太帧上运行的协议有哪些?实验三 网络层一、实验目的1了解IP协议。2了解ICMP协议及其 作用。二、原理概述IP协议IP(Internet Protocol)协议是TCP/IP协议族的核心组成部分,是目前应用最广的网络互联协议。IP层对应于ISO/OSI七层参考模型中的网络层。通过IP数据包和IP地址屏蔽掉了不同的物理网络(如以太网、令牌环网等)的帧格式、地址格式等各种底层物理网络细节,使得各种物理网络的差异性对上层协议不复存在,从而使网络互联成为可能。IP协议只提供了不可靠的数据包传送服务,不能保证数据正确到达目的。在IP网络中,每个通信节点有一个唯一的32位地址,通常记成点分十进制形式(如)。地址分为两部分,网络号和主机号,网络号的长度通常用子网掩码来确定。每个主机都属于一个网络。在IP网络上通信是通过分组交换方式完成的,即通过不同的路由器来实现转发,最后发送到目标主机所在网络上。在转发过程中,链路层协议以及链路层每帧能够发送的最长数据可能不一致,路由器必须处理这些差异。协议协议用于主机和路由器之间传递控制消息,如指主机是否可达、路由是否可用等消息。这些控制消息不传输用户数据,而用于报告用户数据传递情况。报文分为两种类型,即差错报文和询问报文。三、实验内容1利用Ethereal来观察ping命令中产生的IP及ICMP数据。2利用Ethereal来观察ping一个不存在的网络地址时产生的IP及ICMP数据。3利用ping发送长度为5000的数据来观察IP分段。四、实验步骤1查看本主机的IP地址2启动Ethereal,设置过滤器,开始捕捉(1)在本主机桌面或开始菜单中选择Ethereal图标,双击运行。(2)选择菜单“Capture” “Interfaces.” “prepare”。(3)在“Interface”下拉列表框里选中要监视的本地网络适配器。(4) 设置包捕捉过滤器为“icmp”。 (5)点击“Start”按钮开始捕捉数据包。3在本主机上用ping命令访问另一台主机在本主机的命令窗口输入:ping (另一台主机的IP地址)例如:ping 004停止数据包捕捉点击Etherreal的捕捉窗口中的“Stop”按钮。5查看捕获的数据包(1)在Ethereal中查看ping产生的IP、ICMP数据。(2)查看IP各个分组中的头部长度、总长度、协议(protocol)字段、序号(identification)、TTL值、flags及offset等字段。注意序号、TTL等的变化。(3)查看ICMP报文中的类型(type)、代码(code)、identification以及sequence number等字段。注意上述序号和IP分组中的实际序号不同。(4)保存捕获结果。6捕捉ping一个不存在的主机时产生的数据包(1)设置包捕捉过滤器为“icmp”。(2)开始捕捉(3)在本主机的命令窗口上输入:ping (4)停止数据包捕捉点击Ethereal的捕捉窗口中的“Stop”按钮。(5)查看捕获的数据包观察当主机不存在时ICMP的Echo请求和返回的报文。(6)保存有关结果7观察IP分段(1)设置包捕捉过滤器为“icmp”。(2)开始捕捉(3)在本主机的命令窗口下输入: ping l 5000 其中,-l是指echo请求时发送数据大小,默认为32字节。此处选择5000个字节(注意,以太网帧的数据最大为1500)。(4)停止数据包捕捉点击Ethereal的捕捉窗口中的“Stop”按钮。(5)查看捕获的数据包观察一个大的IP分组分解成的多个小段。观察这些的序号、flags、offset、checksum等字段。(6)保存有关结果五、实验报告要求1记录ping命令中产生的IP分组结构。2记录ping命令中产生的ICMP报文结构(包括echo请求及echo应答)。3记录实验中大的IP分组分段结构。六、思考1IP分组中TTL字段是什么意思,有何作用?利用Ethereal观察ping互联网上一台主机时TTL字段如何变化?2IP分组最大有多大?为什么在一个具有小的MUT链路层上传输大的IP分组要分段?IP分组中哪些字段与分段有关?接收方如何确定哪些分段属于同一个IP分组?分组中的校验和是整个段的还是整个IP分组的?3IP协议能保证接收方收到发送方所有的IP分组吗?4ping命令中主要发送了哪些ICMP报文?5ICMP报文中的“identification”和“sequence number”有什么作用?利用Ethereal观察在一次ping过程中“identification”和“sequence number”是如何变化的?6主机不存在时ICMP的echo请求中返回的报文是谁产生的?三、网络与信息安全课程实验指导书;实验一 系统安全设置一、实验目的及任务:掌握对Window200系统进行安全设置的过程。二、实验环境主机操作系统为Windows2000或Windows XP;三、 实验原理要深入理解操作系统安全的定义,具备一定的操作系统设置技能。四、 实验步骤 系统登陆用户账号保护设置、关闭不必要的服务和端口、开启各项安全策略。1、停止Guest账号在计算机管理的用户里面把Guest账号禁用。为了保险起见,最好给Guest加一个复杂的密码。你可以打开记事本,在里面输入一串包含特殊字符、数字、字母的长字符串,然后把它作为Guest用户的密码拷进去。2、限制用户数量去掉所有的Duplicate User用户、测试用户、共享用户等等。用户组策略设置相应权限,并且经常检查系统的用户,删除已经不再使用的用户。这些用户很多时候都是黑客们入侵系统的突破口。3、多个管理员账号、管理员账号改名创建一个一般权限用户用来收信以及处理一些日常事物,另一个拥有Administrators 权限的用户只在需要的时候使用。将Administrator管理员用户名更改为一个一般的用户名。4、陷阱账号创建一个名为“Administrator”的本地用户,把它的权限设置成最低,什么事也干不了的那种,并且加上一个超过10位的超级复杂密码。5、更改默认权限任何时候都不要把共享文件的用户设置成“Everyone”组,包括打印共享,默认的属性就是“Everyone”组的,一定不要忘了改。6、安全密码、屏幕保护密码设置足够强度的管理员密码,并定期更改安全密码。在桌面上单击右键,“属性”,“屏幕保护程序”,选择屏幕保护程序,并点击“设置”按钮设置屏保时间和密码。7、开启操作系统安全策略审核策略、密码策略、账户策略使用用户策略,分别设置复位用户锁定计数器时间为20分钟,用户锁定时间为20分钟,用户锁定阈值为3次;注意应用密码策略,如启用密码复杂性要求,设置密码长度最小值为6位 ,设置强制密码历史为5次,时间为42天。8、关闭不必要的服务、端口关闭端口意味着减少功能,在安全和功能上面需要你做一点决策。如果服务器安装在防火墙的后面,冒险就会少些。但是,永远不要认为你可以高枕无忧了。用端口扫描器扫描系统已开放的端口,确定系统开放的哪些服务可能引起黑客入侵。在系统目录中的system32driversetcservices 文件中有知名端口和服务的对照表可供参考。具体方法为:打开“ 网上邻居/属性/本地连接/属性/internet 协议(TCP/IP)/属性/高级/选项/TCP/IP筛选/属性” 打开“TCP/IP筛选”,添加需要的TCP、UDP协议即可。9、注册表设置:不显示上次登陆名、禁止建立空连接。默认情况下,登录对话框中会显示上次登录的用户名。这使得别人可以很容易地得到系统的一些用户名,进而做密码猜测。修改注册表可以不让对话框里显示上次登录的用户名。方法为:打开注册表编辑器并找到注册表项“HKLMSoftwareMicrosoftWindows TCurrentVersionWinlogonDont-DisplayLastUserName”,把REG_SZ的键值改成1。默认情况下,任何用户都可通过空连接连上服务器,进而枚举出账号,猜测密码。我们可以通过修改注册表来禁止建立空连接:即把“ Local_MachineSystemCurrentControlSetControlLSA-RestrictAnonymous” 的值改成“1”即可。五、实验结果:Window2000操作系统进行了安全设置六、实验思考题阐述系统安全设置的重要性。实验二 传统密码算法一、实验目的及任务通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础二、实验环境运行Windows操作系统的PC机,具有C语言编译环境。三、实验原理古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密.它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密.下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象.1. 替代密码 替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替代后形成密文.例如:明文字母a,b,c,d ,用D,E,F,G做对应替换后形成密文. 替代密码包括多种类型,如单表替代密码,多明码替代密码,多字母替代密码,多表替代密码.下面我们介绍一种典型的单表替代密码,恺撒(caesar)密码,又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod n 其中:m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数. 例如,对于明文字母H,其在字母表中的位置数为8,设k=4,则按照上式计算出来的密文为L: E(8) = (m+k) mod n = (8+4) mod 26 = 12 = L 2. 置换密码 置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密.置换密码有时又称为换位密码. 矩阵换位法是实现置换密码的一种常用方法.它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文.例如,明文为attack begins at five,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式: a t t a c k b e g i n s a t f i v e 根据密钥cipher中各字母在字母表中出现的先后顺序,给定一个置换: 1 2 3 4 5 6 F= 1 4 5 3 2 6 1根据上面的置换,将原有矩阵中的字母按照第1列,第4列,第5列,第3列,第2列,第6列的顺序排列,则有下面形式: a a c t t k b i n g e s a i v f t e 从而得到密文:abatgftetcnvaiikse 其解密的过程是根据密钥的字母数作为列数,将密文按照列,行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文. 四、 实验步骤(1)根据实验原理部分对替代密码算法的介绍,自己创建明文信息,并选择一个密钥k,编写替代密码算法的实现程序,实现加密和解密操作. (2)根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作.五:实验结果:1:L2:abatgftetcnvaiikse六、实验思考题1:替代密码的原理是什么?2:置换密码的原理是什么?实验三 DES加解密算法的实现一、实验目的及任务:掌握DES加密算法的加解密过程。二、实验环境VC或TC编程环境;主机操作系统为Windows2000或Windows XP;三、 实验原理要深入理解对称加密算法,掌握DES加密过程。具备一定的C语言编程技能。DES( Data DES( Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。DES算法以被应用于许多需要安全加密的场合。(一)、密钥生成1、变换密钥 取得64位的密钥,每个第8位作为奇偶校验位。 2、变换密钥。 (1)、舍弃64位密钥中的奇偶校验位,根据下表(PC-1)进行密钥变换得到56位的密钥,在变换中,奇偶校验位以被舍弃。 (2)、将变换后的密钥分为两个部分,开始的28位称为C0,最后的28位称为D0。(3)生成16个子密钥,初始I=1。 (i)、同时将CI、DI左移1位或2位,根据I值决定左移的位数。(ii)、将CIDI作为一个整体按下表(PC-2)变换,得到48位的KI (iii)、从1-2-3-1处循环执行,直到K16被计算完成。 (二)、处理64位的数据 1、取得64位的数据,如果数据长度不足64位,应该将其扩展为64位(例如补零) 2、将64位数据按下表变换(IP) 3、将变换后的数据分为两部分,开始的32位称为L0,最后的32位称为R0。4、用16个子密钥加密数据,初始I=1。 (1)、将32位的RI-1按下表(E)扩展为48位的EI-1 (2)、异或EI-1和KI,即EI-1 XOR KI (3)、将异或后的结果分为8个6位长的部分,第1位到第6位称为B1,第7位到第12位称为B2,依此类推,第43位到第48位称为B8。 (4)、按S表变换所有的BJ,初始J=1。所有在S表的值都被当作4位长度处理。 (i)将BJ的第1位和第6位组合为一个2位长度的变量M,M作为在SJ中的行号。 (ii)、将BJ的第2位到第5位组合,作为一个4位长度的变量N,N作为在SJ中的列号。(iii)、用SJMN来取代BJ。 (iv)、从(i)处循环执行,直到B8被替代完成。(5)、将B1到B8组合,按下表(P)变换,得到P。 (6)、异或P和LI-1结果放在RI,即RI=P XOR LI-1。 (7)、LI=RI-1 (8)、从2-4-1处开始循环执行,直到K16被变换完成。 5、组合变换后的R16L16(注意:R作为开始的32位),按下表(IP-1)变换得到最后的结果。 四、 实验步骤利用编程语言实现DES加解密算法。1、 编程:包含的功能函数有:static void DES(char Out8, char In8, const SUBKEY_P pskey, bool Type);/标准DES 加/解密static void SETKEY(const char* Key, int len);/ 设置密钥static void Set_SubKey(SUBKEY_P pskey, const char Key8);/ 设置子密钥static void F_FUNCTION(bool In32, const bool Ki48);/ f 函数完成扩展置换、S-盒代替和P 盒置换static void S_BOXF(bool Out32, const bool In48);/ S-盒代替函数static void TRANSFORM(bool *Out, bool *In, const char *Table, int len);/ 变换函数static void XOR(bool *InA, const bool *InB, int len);/异或函数static void CYCLELEFT(bool *In, int len, int loop);/ 循环左移函数static void ByteToBit(bool *Out, const char *In, int bits);/ 字节组转换成位组函数static void BitToByte(char *Out, const bool *In, int bits);/ 位组转换成字节组函数2、 调试3、 运行结果4、 存盘五、实验结果加密:Key: 0x30 0x30 0x30 0x30.0x30(8个字节)Data: 0x31 0x31 0x31 0x31.0x31(8个字节)Mode: Encryption结果:65 5e a6 28 cf 62 58 5f解密:Key: 0x31 0x31.0x31(8个0x31)Data: 65 5e a6 28 cf 62 58 5fMode: Decryption结果:0x31 0x31.0x31(8个0x31)六、实验思考题DES算法主要有哪几部分?可以画出流程七、DES源程序(仅供参考) / / DES加密 / / 被加密的明文 / 密钥 / 向量 / 密文 public static Byte DESEncrypt(Byte Data, String Key, String Vector) Byte bKey = new Byte8; Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length), bKey, bKey.Length); Byte bVector = new Byte8; Array.Copy(Encoding.UTF8.GetBytes(Vector.PadRight(bVector.Length), bVector, bVector.Length); Byte Cryptograph = null; / 加密后的密文 DESCryptoServiceProvider EncryptProvider = new DESCryptoServiceProvider(); EncryptProvider.Mode = CipherMode.CBC; EncryptProvider.Padding = PaddingMode.Zeros; try / 开辟一块内存流 using (MemoryStream Memory = new MemoryStream() / 把内存流对象包装成加密流对象 using (CryptoStream Encryptor = new CryptoStream(Memory, EncryptProvider.CreateEncryptor(bKey, bVector), CryptoStreamMode.Write) / 明文数据写入加密流 Encryptor.Write(Data, 0, Data.Length); Encryptor.FlushFinalBlock(); Cryptograph = Memory.ToArray(); catch Cryptograph = null; return Cryptograph; / / DES解密 / / 被解密的密文 / 密钥 / 向量 / 明文 public static Byte DESDecrypt(Byte Data, String Key, String Vector) Byte bKey = new Byte8; Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length), bKey, bKey.Length); Byte bVector = new Byte8; Array.Copy(Encoding.UTF8.GetBytes(Vector.PadRight(bVector.Length), bVector, bVector.Length); Byte original = null; DESCryptoServiceProvider CryptoProvider = new DESCryptoServiceProvider(); CryptoProvider.Mode = CipherMode.CBC; CryptoProvider.Padding = PaddingMode.Zeros; try / 开辟一块内存流,存储密文 using (MemoryStream Memory = new
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工商银行2025秋招无领导模拟题角色攻略安徽地区
- 2025年3D打印技术的工业应用扩展
- 中国银行2025秦皇岛市秋招面试典型题目及参考答案
- 辅导员入职培训课件
- 交通银行2025黑河市秋招面试典型题目及参考答案
- 2025行业国际竞争力分析
- 工商银行2025上饶市小语种岗笔试题及答案
- 邮储银行2025阜阳市秋招英文面试题库及高分回答
- 工商银行2025秋招无领导小组面试案例库陕西地区
- 中国银行2025周口市秋招笔试英语题专练及答案
- 2025年中国电信集团招聘考试试题及答案全收录
- 成都市新都区部分单位2025年8月公开招聘编外(聘用)人员(三)(20人)备考练习试题及答案解析
- 浙江省G12名校协作体2025学年第一学期9月高三上学期开学联考数学试卷
- 人教PEP版(一起)(2024)一年级上册英语全册教案
- (9月3日)铭记历史珍爱和平-纪念中国人民抗日战争暨世界反法西斯战争胜利80周年爱国主义主题教育班会课件
- 租户消防安全知识培训课件
- 2025广东汕尾市海丰县纪委监委招聘政府聘员6人笔试模拟试题及答案解析
- 《食堂食品安全管理制度》知识培训
- 《大学生就业指导》课件第六章 就业权益与法律保障
- 2025年事业单位招聘工作人员考试笔试试题(含答案)
- 纪念中国人民抗日战争胜利80周年心得体会
评论
0/150
提交评论