密码学实验报告c语言程序,密码学_实验一_古典密码算法_C语言.doc

您所在位置:网站首页 > 海量文档

&nbsp>&nbsp高等教育&nbsp>&nbsp实验设计

7e3e25dd1884ce9b7725a69a698d5758.gif

密码学_实验一_古典密码算法_C语言.doc8页

本文档一共被下载:2377011b61454b208b34ad77b4c31088.gif次,您可全文免费在线阅读后下载本文档。

072ad097814a33d1ad18e33ca14a5a9e.png

9ec2792a743ebdf4575ee09a03c275ea.png

7af312d1be2cfc1e59f15880bb7a7e7a.png

5f207613e329ca76dc87c76d3ff77e64.png

adf7aa3071c520b8a2063089f549261c.png

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

2.该文档所得收入(下载+内容+预览三)归上传者、原创者。

3.登录后可充值,立即自动返金币,充值渠道很便利

数学与软件科学学院 实验报告

学期:_2011_至_2012_ 第__2 学期 2012 年 月 日

课程名称: _ 专业:信息与计算科学 _2009_级_06_班

实验编号: 实验项目 _ 指导教师_ _

姓名: 林海 学号: 2009060619 实验成绩: ___

实验一 古典密码算法

实验原理

古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。

实验目的

通过变成实现替代密码算法和置换密码算法,加深对古典密码体质的了解,为深入学习密码学奠定基础。

实验环境

运行windows或linux操作系统的pc机,具有gcc(linux)、VC(Windows)等C语言编译环境。

实验内容

4.1替代密码算法

4.1.1

根据实验远离部分对替代密码算法的介绍,创建明文信息,并选择一个密钥k,编写替代密码算法的实现程序,实现加密和解密操作。

替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。

4.1.2

替代密码算法的远离是使用替代法进行加密,就是将明文的字符用其他字符替代后形成密文。例如字母a、b、c、d,用D、E、F、G做对应替换后形成密文。

4.1.3 代码

#include

#include

#include

#define N 500

int main()

{

/*--------------------------------*/

int i=0,k,m,n,l;

char str1[N],str2[N]; /*C=M+K...K is key...*/

clrscr();

/*--------------------------------*/

printf("This is a code password program......\n");

printf("Please input proclaimed in writing(M)::\n");

gets(str1);/*输入要加密的明文M*/

printf("Please input the key(K)(int)::\n");

scanf("%d",&k);/*输入密钥K*/

m=strlen(str1);/*测试明文的长度*/

printf("The M length is %d\n",m);

printf("\n *\n *\n *\n***\n *\n");

printf("ciphertext(C) is ::\n\n");

for(i=0;i

{

n=(int)str1[i];/*将字符转换成ASCII*/

if(str1[i]==' ')/*如果字符串中出现空格返回空格*/

{

printf(" ");

str2[i]=str1[i];

}

else if(n>96&&n<123)/*对小写进行加密*/

{

n=(n-97+k)%26;

if(n<0)

n=26+n;

l=(char)(n+97);

printf("%c",l);

str2[i]=l;

}

else if(n>64&&n<91)/*对大写进行加密*/

{

n=(n-65+k)%26;

if(n<0)

n=26+n;

l=(char)(n+97);

printf("%c",l);

str2[i]=l;

}

}

str2[i]='\0';

/*--------------------------------*/

printf("\n\nThe C length is %d",strlen(str2));

printf("\n\n *\n *\n *\n***\n *\n");

printf("When the ciphertext is '%s',\nThe password program is...::\n\n",str2);

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名:

验证码:

c9f2bced460b0329ba0aadbbc3f0fc71.png

匿名?

发表评论

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.古典密码算法之 替代算法 import java.io.*; public class Caesar { //向右加密方法 ming为明文 mi 为密文 yao为密钥 public static void encode(String ming, int yao) { String mi = ""; for(int i=0; i<ming.length(); i++){ if (ming.charAt(i) == 32) mi += (char)(32); else if (ming.charAt(i) >= 'a' && ming.charAt(i) <= 'z') mi += (char)('a' + ((ming.charAt(i) - 'a' + yao) % 26)); else if (ming.charAt(i) >= 'A' && ming.charAt(i) <= 'Z') mi += (char)('A' + ((ming.charAt(i) - 'A' + yao) % 26)); else if (ming.charAt(i) >= '0' && ming.charAt(i) <= '9') mi += (char)('0' + ((ming.charAt(i) - '0' + yao) % 10)); } System.out.println("密文为: " + mi); } /* * 2.古典密码算法之 置换算法 * */ public class Change { //当加密或者解密成功时返回CRYPT_OK,失败时返回CRYPT_ERROR private final static int CRYPT_OK = 1; private final static int CRYPT_ERROR = 0; /* * @param initCode 没有加密前的字符串 * @CRYPT_OK 加密成功 * @CRYPT_ERROR 加密失败 */ public static int encrypt(String initCode) throws Exception{ //用来输出加密后的字符 StringBuilder sb = new StringBuilder(); //获取initCode的字符串长度 int codeLength = initCode.length(); //根据这个codeLength来确定要几行6列 int rows = (int)Math.ceil(codeLength/6.0 ); //构造一个rows行6列的数组 char[][] initChar = new char[rows][6]; //存放initCode中的所有字符,包括空格 for(int i = 0; i < initChar.length; i++ ) for(int j=0; j < initChar[0].length; j++){ //将对应字符放入这个数组中 try{ initChar[i][j] = initCode.charAt( (i ) * initChar[0].length + j ); }catch(Exception e){

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值