int x,y; }
printf(\输入\gets(string);
printf(\请输入密钥\scanf(\printf(\密文:%s\\n\fun(string,x,y);
printf(\明文:%s\\n\
密码加密: #include 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]; 6 new1[i][4]=temp[i][2]; } } main() { char old[100],new1[20][5]; gets(old); change(old,new1); printf(\} 密码解密 #include 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() 7 { 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) 8 (3) (4)交换和; (5); (6). 四、实验组织运行要求 本实验采用集中授课形式,每个同学独立完成上述实验要求。 五、实验条件 每人一台计算机独立完成实验,有如下条件: (1)硬件:微机; (2)软件:VC++6.0、VC++.Net 2005。 六、实验步骤 (1)将各函数编写完成; (2)在主函数中调用各函数,实现加密和解密。 七、实验报告 实验报告主要包括实验目的、实验内容、实验原理、源程序及结果。 线性移位寄存器: #include int i,j ; char ans ; while ( 1 ) { printf(\*****\\n\\n\ printf(\输入四个字符作为初始密钥,老师要求:good for ( i=0 ; i<4 ; i++ ) scanf(\ 9 KeyToBit(); printf(\input the Information encrypted ( End with \\\# \\\输入需要加密的明文,以#作为结束符 for ( i=0 ; i<1000 ; i++ ) { scanf(\记录输入的明文 tempInfo[i] = Info[i] ; 将Ascii值同步附给tempInfo if ( Info[i] == '#' ) { InfoLength = i ; break ; 遇到#则停止读取 } } printf(\*****\\n\\n\ printf(\ for ( i=0,j=0 ; i InfoToBit(i); 每个明文字符单独转化为8bit位序列,保存到Bit[8] LFSR(); 加密 Cipher[j] = Out[0] ; printf(\ Cipher[j+1] = Out[1] ; printf(\j = j + 2 ; } 10