ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:37.34KB ,
资源ID:16071904      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-16071904.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(置换密码.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

置换密码.docx

1、置换密码实验3 置换密码一、实验目的学习常见的古典密码学算法,通过编程实现置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。二、实验原理古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍另一种常见的具有代表性的古典密码算法-置换密码。置换密码算法的原理是不改变明文字符,而是按照某一规则重新排列消息中的比特或字符顺序,才而实现明文信息的加密。置换密码有时又称为换位密码。矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给定的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重

2、新组合矩阵中的字母,从而形成密文。例如,明文为attack begins at five,密钥为cipher,将明文按照每行6个字母的形式排在矩阵中,形成如下形式:根据密钥cipher中各个字母在字母表中出现的先后顺序,给定一个置换:根据上面的置换,将原有居住中的字母按照第列、第列、第列、第列、第列、第列的顺序排列,则有下面的形式:从而得到密文:其解密过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。三、实验所需仪器、设备运行Windows操作系统的PC机,具VC+(Windows)等C语言编译环境。四、实验内容和要求 1 根据实

3、验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥, 编写置换密码算法的实现程序,实现加密和解密操作。2要求上述密码算法最后的实现程序提供加密和解密两个接口:int encrypt ( )和 int decrypt ( ),当加密或者解密成功时返回 CRYPT_OK,失败时返回 CRYPT_ERROR。五实验报告要求要求提供算法实现程序和实验测试结果(用截图)。加密源程序import java.util.Scanner;public class Replace_encryption String str_1= attackbeginsatfive;/明文字符串 String st

4、r_2=cipher;/密钥 int len_2=str_2.length(); /密钥长度 int len_1=str_1.length(); /明文的长度 int len_3=len_1/len_2; int count=0; int in=new intlen_2; char ch; char ch_1=new charlen_3len_2; char ch_2=new charlen_3len_2; public char Replace() for(int i=0;ilen_3;i+)/字符串转换为字符数组 str_1. getChars(count,count+len_2,ch_1

5、i,0); count=count+len_2; System.out.println(明文:); for(int i=0;ilen_3;i+) for(int j=0;jlen_2;j+) System.out.print(ch_1ij+ ); System.out.println(); for(int i=0;ilen_3;i+)/ 置换 for(int j=1;j=6;j+) switch(j) case 1: ch_2i0 = ch_1i0; break; /1 case 2: ch_2i1 = ch_1i3; break; /4 case 3: ch_2i2 = ch_1i4; br

6、eak; /5 case 4: ch_2i3 = ch_1i2; break; /3 case 5: ch_2i4 = ch_1i1; break; /2 case 6: ch_2i5 = ch_1i5; break; /6 return ch_2; public void Show(char ch_3) in0=1; in1=4; in2=5; in3=3; in4=2; in5=6; System.out.println( 密文:); for(int i=0;i6;i+) for(int j=1;j=6;j+) if(j=ini) for(int l=0;l3;l+) System.out

7、.print(ch_3lini-1+ ); 解密源程序public class Replace_decryption String str_1= abatgftetcnvaiikse;/密文字符串 String str_2=cipher;/密钥 int len_2=str_2.length(); /密钥长度6 int len_1=str_1.length(); /明文的长度 int len_3=len_1/len_2; int count=0; int in=new intlen_2; char ch; char ch_1=new charlen_2len_3; char ch_2=new c

8、harlen_2len_3; char ch_3=new charlen_2len_3; public char Replace() for(int i=0;ilen_2;i+)/字符串转换为字符数组 str_1. getChars(count,count+len_3,ch_1i,0); count=count+len_3; System.out.println(密文:); for(int i=0;ilen_2;i+) for(int j=0;jlen_3;j+) System.out.print(ch_1ij+ ); System.out.println(); for(int i=0;ile

9、n_3;i+)/ 置换 for(int j=1;j=6;j+) switch(j) case 1: ch_20i = ch_10i; break; /1 case 2: ch_23i = ch_11i; break; /4 case 3: ch_24i = ch_12i; break; /5 case 4: ch_22i = ch_13i; break; /3 case 5: ch_21i = ch_14i; break; /2 case 6: ch_25i = ch_15i; break; /6 / for(int i=0;ilen_2;i+)/ for(int j=0;jlen_3;j+)

10、/ System.out.print(ch_2ij+ );/ / return ch_2; public char Exchange(char ch) for(int i=0;ilen_3;i+)/ 置换 for(int j=1;j=6;j+) switch(j) case 1: ch_30i = ch_20i; break; /1 case 2: ch_33i = ch_21i; break; /4 case 3: ch_34i = ch_22i; break; /5 case 4: ch_32i = ch_23i; break; /3 case 5: ch_31i = ch_24i; br

11、eak; /2 case 6: ch_35i = ch_15i; break; /6 / for(int i=0;ilen_2;i+)/ for(int j=0;jlen_3;j+)/ System.out.print(ch_3ij+ );/ / return ch_3; public void Show(char ch_3) System.out.println( 明文:); for(int i=0;ilen_3;i+) for(int j=0;jlen_2;j+) System.out.print(ch_3ji+ ); 测试源程序public class Test public stati

12、c void main(String args) char ch1; char ch2; char ch3; System.out.println(*加密*); Replace_encryption re=new Replace_encryption(); ch1=re.Replace(); re.Show(ch1); System.out.println(); System.out.println(*解密*); Replace_decryption rd=new Replace_decryption(); ch2=rd.Replace(); ch3=rd.Exchange(ch2); rd.Show(ch3); 如有侵权请联系告知删除,感谢你们的配合!

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2