内容发布更新时间 : 2024/11/17 6:19:00星期一 下面是文章的全部内容请认真阅读。
} } main() {
char string[100];
int x,y; }
printf(\输入\gets(string);
printf(\请输入密钥\scanf(\printf(\密文:%s\\n\fun(string,x,y);
printf(\明文:%s\\n\
密码加密: #include
void change(char old[],char new1[][5]) { int i,j,t;
char temp[20][5]; t=strlen(old);
for(i=t;i<(5-t%5)+t;i++) //将一维数组old每5个分成一组 不足5位的用X补充
old[i]='x';
for(i=t+(5-t%5);i<100;i++)
old[i]='\\0';
for(i=0;i<20;i++) //将一维数组old转换成一个20*5的二维数组
temp
for(j=0;j<5;j++) temp[i][j]=old[5*i+j];
for(i=0;i<20;i++) //密文字母交换顺序 {
new1[i][0]=temp[i][1]; new1[i][1]=temp[i][4]; new1[i][2]=temp[i][3]; new1[i][3]=temp[i][0]; new1[i][4]=temp[i][2]; } } main() {
char old[100],new1[20][5]; gets(old); change(old,new1); printf(\}
密码解密
#include
void change(char old[],char new1[][5]) { int i,j,t; char temp[20][5]; t=strlen(old);
for(i=0;i<20;i++) //将一维数组old转换成一个
20*5的二维数组temp
for(j=0;j<5;j++) temp[i][j]=old[5*i+j];
for(i=0;i<20;i++) //密文字母交换顺序 {
new1[i][1]=temp[i][0]; new1[i][4]=temp[i][1]; new1[i][3]=temp[i][2]; new1[i][0]=temp[i][3]; new1[i][2]=temp[i][4]; } } main() {
char old[100],new1[20][5]; gets(old); change(old,new1); printf(\}
实验二 序列密码
实验学时:2学时 实验类型:验证 实验要求:必修 一、实验目的
编程实现序列密码RC4的加密方法。 二、实验内容
序列密码RC4。 三、实验原理、方法和手段
RC4首先进行S表的初始化: (1);
(2)用密钥填充另一个256字节的数组K,如果密钥长度小于256字节,则依次重复填充,直至填满这个数组。
(3)J=0;
(4)对于I=0到255,重复以下步骤 ①;
② 交换和。
RC4对下面(1)~(5)循环后,得出密钥流的一个字节z。 (1); (2) (3) (4)交换和; (5); (6).
四、实验组织运行要求
本实验采用集中授课形式,每个同学独立完成上述实验要求。 五、实验条件
每人一台计算机独立完成实验,有如下条件: (1)硬件:微机;
(2)软件:VC++6.0、VC++.Net 2005。 六、实验步骤
(1)将各函数编写完成;
(2)在主函数中调用各函数,实现加密和解密。 七、实验报告
实验报告主要包括实验目的、实验内容、实验原理、源程序及结果。 线性移位寄存器:
#include
char InputKey[4]; //输入的4位密钥字符
int InitKey[32]; //密钥转化成的32位0或1的序列
int Bit[8]; //明文中单个字符的位序列(通过for使Bit数组改变,逐一表示各个字符) int LFSRKey[32];
char Out[2]; //每个字符加密后通过2位16进制表示
char Info[1000]; //需要加密的明文,最多1000位,当然可以修改该值使之更大
int tempInfo[1000]; //明文字符对应的Ascii值 int InfoLength; //实际明文长度 char Cipher[2000]; //密文 // (,0 )
void KeyToBit(); // 把初始密钥转化成位序列 void LFSR(); // LFSR序列加密
void Output16(); // 把二进制转化为16进制 void InfoToBit(int j); // 把输入的明文转化成位序列 main() {
int i,j ; char ans ; while ( 1 ) {
printf(\*****\\n\\n\
printf(\输入四个字符作为初始密钥,老师要求:good