古典密码实验报告.doc

哈尔滨工程大学实验报告实验名称古典密码算法班级学号姓名实验时间2014年4月成绩指导教师实验室名称哈尔滨工程大学实验室与资产管理处制一、实验名称古典密码算法2、实验目的通过编程实现经典的代替密码算法和置换密码,包括移位密码、维吉尼亚密码、周期置换密码、列置换密码,加深对代替技术的了解,为现代分组密码实验奠定基础。3、实验环境(实验所使用的器件、仪器设备名称及规格)运行WINDOWS或LINUX操作系统的PC机,具有GCCLINUX、VC(WINDOWS)等C语言编译环境。4、实验任务及其要求(1)根据实验原理部分对移位密码的介绍,自己创建明文信息,并选择一个密钥,编写移位密码的实现程序,实现加密和解密操作。(2)根据实验原理部分对维吉尼亚密码的介绍,自己创建明文信息,并选择一个密钥,编写维吉尼亚密码的实现程序,实现加密和解密操作。(3)根据实验原理部分对周期置换密码的介绍,自己创建明文信息,并选择一个密钥,编写周期置换密码的实现程序,实现加密和解密操作。(4)根据实验原理部分对列置换密码的介绍,自己创建明文信息,并选择一个密钥,编写列置换密码的实现程序,实现加密和解密操作。5、实验设计(包括原理图、真值表、分析及简化过程、卡诺图、源代码等)1.移位密码移位密码(SHIFTCIPHER)是一种典型的单表替代密码,也称为加法密码。移位密码的加密方法就是将明文中的每个字母用其在字母表后面的第K个字母替代,它的加密过程可以表示为CMKMODN其中,M为明文字母在字母表中的位置数;N为字母表中的字母总数;K为密钥;C为密文字母在字母表中对应的位置数。相应的,移位密码的解密过程可以表示为MCKMODN移位密码的一个典型代表就是凯撒密码(CEASERCIPHER),它是K3时的移位密码。使用英文字母表的撒密码的加(解)密可以表示为MC3MOD26MC3MOD26,例如,明文ATTACKSATNINEAM密钥3加密将明文分组对每一个密文字母,依英文字母表,用其右的第3个字母代替密文DWWDFNVDWQLQHDP另外,使用凯撒密码加密后的密文“DWWDFNVDWILYHSP”,其明文为“ATTACKSATFIVEPM”。2.维吉尼亚密码维吉尼亚密码(VIGENERECIPHER)是一种多表代替密码,其本质是周期移位密码。维吉尼亚密码的(用户)密钥为一含有D个字母的有限字母序列KK0K1KD1加密时,首先将用户密钥进行周期扩展(周期为D),扩展后的无限字母序列称为工作密钥,记为KK0K1KI其中KIKIMODD,I0,1,当D1时,维吉尼亚密码就是移位密码。对于含有L个字母的明文,维吉尼亚加密过程可以表示为CIMI+KIMODN其中,MM0M1MIML1为明文,CC0C1CICL1为密文,KK0K1KIKL1为工作钥,N为明文字母表的长度,L为明文长度(含有字母的数目)。例如,使用用户钥CAT,对明文“VIGENERECIPHER”进行维吉尼亚加密。此时,N26(对应英文字母表),用户钥C3、A0、T19,得到的密文为“XIZGNXTEVKPAGR”。置换(PERMUTATION)是古典密码中另一种基本的处理技巧,就是将明文中的字母重新排列,字母本身不变,只是改变其位置。置换密码(SUBSTITUTIONCIPHER)就是使用置换法进行加解密的密码算法,也称为换位密码。置换密码的密钥是一个置换,它表示了明文字母在密文中出现的位置。例如,使用密钥Π3421,对明文“MING”进行加密,得到的密文为“NGIM”。3.周期置换密码周期置换密码是将明文字母按一定长度M进行分组,把每个分组中的字母按1,2,,M的一个置换Π重排位置次序来得到密文的一种加密方法。其中的密钥就是置换Π,在Π的描述中包含了分组长度的信息。解密时,对密文字符按长度M进行分组,并按Π的逆置换Π−1把每组字符重排位置次序来得到明文。例如,明文MINGCHENJIUDIANFADONGFANGONG加密密钥3421(I1,2,3,4的一个置换ΠI3,4,2,1)加密将明文分组(4个字母一组),然后根据加密密钥给定的置换,对每个明文分组进行置换MINGCHENJIUDIANFADONGFANGONGNGIMENHCUDIJNFAIONDAANFGNGOG密文NGIMENHCUDIJNFAIONDAANFGNGOG解密密钥4312(3412的逆置换)4.列置换密码列置换密码也称为矩阵置换密码。其加解密方法如下把明文字符以固定的宽度M分组长度水平地按行写在一张纸上,按1,2,,M的一个置换Π交换列的位置次序,再按垂直方向即按列读出即得密文。解密就是将密文按相同的宽度M垂直在写在纸上,按置换Π的逆置换Π−1交换列的位置次序,然后水平地读出得到明文。置换Π就是密钥。例如,明文MINGCHENJIUDIANFADONGFANGONG密钥YULANHUA加密去掉密钥重复字母得YULANH,得到密钥字母顺序653142得出距阵列数为6,将明文按行填充距阵按列(依顺序)写出距阵中的字母。密文GIFFGHDDN0NJNGNCUAA0INANOMEIOG(其中0为无效字符)解密加密的逆过程6、实验步骤通过实验分析,将各个古典密码算法编写出来,然后编写一个主函数。调试,验证加密解密正确性。INCLUDEINCLUDEDEFINECRYPT_OK1DEFINECRYPT_ERROR0DEFINEMAXSIZE100VOIDSHIFTCIPHERVOIDVIGENERECIPHERVOIDCYCLECIPHERVOIDCOLCIPHERVOIDMAIN{INTOP0WHILE1{PRINTF“WHICHCIPHERWOULDYOUWANT1SHIFT2VIG3CYC4COL\N“SCANF“D“,FSTDINSWITCHOP{CASE1{SHIFTCIPHER}BREAKCASE2{VIGENERECIPHER}BREAKCASE3{CYCLECIPHER}BREAKCASE4{COLCIPHER}BREAK}}}//主函数//列置换置换密码INTCOLENCRYPTCHARPLAIN,CHARCIPHER,CHARKEY//列置换置换密码加密算法INTCOLDECRYPTCHARPLAIN,CHARCIPHER,CHARKEY//列置换置换密码解密算法VOIDCOLCIPHERENCRYPT//列置换置换密码加密调用VOIDCOLCIPHERDECRYPT//列置换置换密码解密调用VOIDCOLCIPHER//列置换置换密码模块调用INTFIXCHARM,INTT//字符串补齐修正VOIDCOLCIPHER{INTOP0WHILE1{FSTDINPRINTF“__THIS_IS_COLOUM_CIPHER_PROCESS____________________\N“PRINTF“1FORENCRYPT,2FORDECRYPT“SCANF“D“,GETCHARSWITCHOP{CASE1{COLCIPHERENCRYPT}BREAKCASE2{COLCIPHERDECRYPT}BREAKDEFAULT{PRINTF“ERROR\N“}}}}//列

古典密码算法实验c语言,古典密码实验报告.doc相关推荐

  1. 古典密码算法实验c语言,2021信息安全 实验一 古典密码算法C语言.docx

    2021信息安全 实验一 古典密码算法C语言.docx 信息安全信息安全 实验一实验一 古典密码算法古典密码算法 C C 语言语言 信息安全实验报告 课程名称 _ 专业计算机科学与技术 _2010_级 ...

  2. DES密码算法实现(C语言)

    算法介绍 DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法. 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算( ...

  3. 储蓄综合业务平台 c语言实训报告,计122申诗雨C语言银行系统实训报告.doc

    <计122申诗雨C语言银行系统实训报告.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<计122申诗雨C语言银行系统实训报告.doc>文档请在天天 ...

  4. SM4密码算法实现(C语言只使用stdio.h库)

    SM4算法分析与实现 目录 SM4算法简介 SM4算法原理 SM4算法实现与设计 完整代码 加密流程图点这里 SM4算法简介 SM4密码算法是一个分组算法.数据分组长度为128比特,密钥长度为128比 ...

  5. 基础密码算法c语言实现,国密SM2密码算法的C语言实现

    邢维哲 [摘要] N.Koblitz和V.Miller在1985年各自獨立地提出将椭圆曲线应用于公钥密码系统.SM2椭圆曲线密码算法是国家密码管理局批准的一组算法,在电力自动化通讯中得到了广泛应用.本 ...

  6. mysql实验6语言结构_实验六 SQL语言数据查询语言DQL.pdf

    实验六 SQL语言数据查询语言DQL 实验六 SQL 语言数据查询语言DQL 一.实验目的 数据查询语言指对数据库中的数据查询.统计.分组.排序等操作.查询语 句可以分为简单查询.连接查询.嵌套查询和 ...

  7. c#语言程序设计上机实验,C#语言程序设计基础实验指导(第3版)

    第1章 绪论 1.1 知识点回顾 1.2 实验目的和要求 1.3 实验内容 1.4 实验指导 实验1-1 模拟电子邮箱注册 实验1-2 创建和调用C#类库程序 1.5 补充上机练习 第2章 C#数据类 ...

  8. c语言五子棋设计报告及源代码,c语言五子棋源代码设计报告.doc

    C语言程序设计综合实验 设计报告 题目: 五子棋 班级; 07电气(1)班 人数: 4人 小组成员: 时间: 08.9.19 目录 1 课程设计报告 1.1课题描述 1.2需求分析 1.3概要设计 2 ...

  9. c语言预上机报告,《C语言程序设计》上机报告.doc

    <C语言程序设计>上机报告 <程序设计语言基础(1)上机实践> 综合报告 专业班级 姓 名 学 号 <程序设计语言基础(1)上机实践>报告 ( 2008-2009 ...

最新文章

  1. 2016设置方框的尺寸_四种模板脚手架分类、优缺点及参数设置对比
  2. xshell安装与配置,Xftp(不能连接虚拟机解决方法,sudo apt-get install openssh-server,服务没开怎么传输数据?)(虚拟机和windows之间自由复制)
  3. redis.conf 配置项说明
  4. web.py——运行错误【AttributeError: ‘StaticApp‘ object has no attribute ‘directory‘】
  5. native react 图片多选_react-native多图选择、图片裁剪(支持ad/ios图片个数控制)
  6. Linux服务器如何防御ARP***
  7. mysql cst_一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历...
  8. 疫情当前,华为云数据库携手WeLink保障企业云上办公数据稳定可靠
  9. 电脑cpu风扇转一下就停无法开机_电脑无法正常开机风扇转一下就停的原因及解决方法...
  10. mysql 解决慢sql_MySQL被慢sql hang住了,用shell脚本快速清除不断增长的慢sql的办法...
  11. oracle11g手工监听配置,手工在同一主机创建主备库oracle11g active dataguard
  12. 在Linux中如何使用gdb调试C程序
  13. Ubuntu+Docker+Tensorflow+GPU安装
  14. Nginx 服务器安装及配置文件详解
  15. android 集成科大讯飞TTS在线语音合成
  16. CANopen基本原理及其应用(二)——对象字典和通讯机制
  17. 为什么面试官狂问八股文?我已经被三家公司问到哑口无言……
  18. 雅加达(印度尼西亚)出差小记
  19. 1_deep-learning-intro
  20. 【FPGA】初探FPGA —— 入门书籍推荐

热门文章

  1. 10次机会 js 猜数_JS猜数字游戏实例讲解
  2. 基于微信旅游景区购票小程序毕业设计毕设作品(1)开发概要
  3. 用相关法辨识系统的脉冲响应 matlab,基于相关分析法的系统辨识算法对比及仿真...
  4. EMV规范学习与研究(十)——卡片行为分析
  5. 国外优秀设计网站推荐
  6. 已知 时钟周期、时钟频率、总线周期 求 总线带宽
  7. linux换桌面窗口管理器,Awesome 窗口管理器——换种方式使用星际译王
  8. linux下执行python脚本并传入参数_实现在Java中执行python代码或py脚本(可传参数)...
  9. pta天梯赛c语言答案,PTA - 团体程序设计天梯赛-练习集(更新中)
  10. Oracle中DDL语句