搜档网
当前位置:搜档网 › 凯撒加密解密C语言课程设计

凯撒加密解密C语言课程设计

凯撒加密解密C语言课程设计
凯撒加密解密C语言课程设计

RSA加密算法_源代码__C语言实现

RSA算法 1978年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。 RSA的安全性依赖于大数难于分解这一特点。公钥和私钥都是两个大素数(大于100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。 密钥对的产生。选择两个大素数,p 和q 。计算:n = p * q 然后随机选择加密密钥e,要求e 和( p - 1 ) * ( q - 1 )互质。最后,利用Euclid 算法计算解密密钥d, 满足e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q 不再需要,应该丢弃,不要让任何人知道。加密信息m(二进制表示)时,首先把m分成等长数据块m1 ,m2,..., mi ,块长s,其中2^s <= n, s 尽可能的大。对应的密文是:ci = mi^e ( mod n ) ( a ) 解密时作如下计算:mi = ci^d ( mod n ) ( b ) RSA 可用于数字签名,方案是用( a ) 式签名,( b )式验证。具体操作时考虑到安全性和m信息量较大等因素,一般是先作HASH 运算。RSA 的安全性。RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA 就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。 由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。 */ #include #include #include

RC4加密算法C语言实现

RC4 加密算法 C 语言实现 代码文件名 RC4.cpp Encrypt.h (代码详见后文) 备注:将以上两个文件放在相同的路径(建议不要放在中文路径 下)编译执行!编译环境 Microsoft Visual C++ 6.0 C-Free 5.0 代码解释 RC4 加密算法是大名鼎鼎的RSA 三人组中的头号人物Ron Rivest 在1987 年设计的密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box 长度可为任意,但一般为256字节。该算法的速度可以达到DES 加密的10倍左右。 RC4 算法的原理很简单,包括初始化算法和伪随机子密码生成算法两大部分。假设S-box 长度和密钥长度均为为n。先来看看算法的初始化部分(用类C伪代码表示): for (i=0; i

} 得到的子密码sub_k用以和明文进行xor运算,得到密文,解密过程也完全相同。 RC4加密算法在C++中的实现: RC4函数(加密/解密):其实RC4只有加密,将密文再加密一次,就是解密了。 GetKey函数:随机字符串产生器。 ByteToHex函数:把字节码转为十六进制码,一个字节两个十六进制。十六进制字符串非常适合在HTTP中传输。 HexToByte函数:把十六进制字符串,转为字节码。。 Encrypt函数:把字符串经RC4加密后,再把密文转为十六进制字符串返回,可直接用于传输。 Decrypt函数:直接密码十六进制字符串密文,再解密,返回字符串明文。 源代码 以下为Encrypt.h文件代码 #ifndef _ENCRYPT_RC4_ #defi ne _ENCRYPT_RC4_ #in clude #defi ne BOX_LEN 256 int GetKey(c onst un sig ned char* pass, int pass_le n, un sig ned char *out); int RC4(c onst un sig ned char* data, int data_le n, const un sig ned char* key, int key_le n, un sig ned char* out, i nt* out_le n); static void swap_byte( un sig ned char* a, un sig ned char* b); char* En crypt(co nst char* szSource, const char* szPassWord); // 加密,返回加密结果 char* Decrypt(co nst char* szSource, con st char* szPassWord); // 解密,返回解密结果 char* ByteToHex(c onst un sig ned char* vByte, const int vLe n); // 把字节码pbBuffer转为十六进制字符串,方便传输 unsigned char* HexToByte(const char* szHex); // 把十六进制字符串转为字节码pbBuffer,解码 #e ndif // #ifndef _ENCRYPT_RC4_

(完整word版)电子系c语言程序设计加密解密

课程设计报告 课程设计名称: C语言程序设计 指导教师: 学生: 学号: 学院:电子信息工程学院 完成时间: 2011年9月27日 嘉应学院电子信息工程学院 1

C语言课程设计说明书 目录 1 需求分析 (1) 2总体设计 (2) 3详细设计 (3) 3.1 换位加密流程图 (3) 3.2 换位解密流程图 (4) 3.3 替代加密流程图 (5) 3.4 替代解密流程图 (6) 4调试与测试 (8) 5测试结果 (8) 6附录 (11) I

1 需求分析 问题描述(实验指导书中已经给出) ①数据的输入和输出;要求使用文件操作。文件(明文,仅限于英文字母)存放在某一已知文本文件中,加密后的文件(密文)存放在另一文件中。 ②换位加密和解密: 加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文; ③凯撒加密和解密: 加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文; ④统计单词的个数; ⑤退出。

2总体设计 (程序设计总流程图,可以画带流程线的流程图) 此处只需要写出一个流程图就可以了,就是总的那个流程图,请规范的画图。不需要分出2.1和2.2. 开始 welcome() caidan() transpen( ); transpde( ) caesaren( ) caesarde() mingwent miwentongji(byebye()

3详细设计 (各模块功能说明,如函数功能、入口及出口参数说明,函数调用关系描述等 这块大家问题最多了,这里不是写程序代码,而是写流程图里面各个主要函数的作用,函数之间关系的说明。 以第1题为例,此处应为: 3.1 换位加密流程图 流程图 (对流程图加以说明。可以把关键语句放在此处,加以注释说明) 建立mingwen.txt 和miwen.txt 文件 输入密钥n 输入明文到数组r k=strlen(r)j 计算数组r 长度 for i=0 to k 关闭并保存mingwen.txt 文件 打开mingwen.txt 文件 space(h,r) 将明文去空格并放到数组h 中 m=strlen(h) 计算数组h 长度 m%n==0 是 否 hang=m/n hang=m/n+1 j=0 for i=0 to hang for i=m to hang*n z=0 fputc(r[i],mingwen) 将明文存放到mingwen.txt 文件中 for j=0 to n h[i]='a'+j j++ for i=0 to hang zl[i][j]=h[z] z++ for j=o to n zl[i][j]=h[z] z++

C语言实现文件的des加解密实例

C语言实现文件的des加解密实例 c语言中的正则 ,d3.js画矢量图+可拖拽的实现思路 DOM2级事件处理程序跨浏览器兼容事件 ,exel导入/导出和csv文件导入、导出 ,Go http访问使用代理 golang进行socket通讯 ,hessian+hibernate 懒加载处理 ,HTML+CSS代码橙色导航菜单html5 撞球游戏 // get 网络请求 func Get(api string,params .Values)(rs[]byte ,err error){ var *. ,err=.Parse(api) if err!=nil{ fmt.Printf("解析错误:\r\n%v",err) return nil,err } //如果参数中有中文参数,这个方法会进行Encode //iOS KVO注册和监听方法 //C语言websocket编程 .RawQuery=params.Encode() resp,err:=http.Get(.String()) if err!=nil{ fmt.Println("err:",err) return nil,err } defer resp.Body.Close() return ioutil.ReadAll(resp.Body) } // post 网络请求 ,params 是.Values类型 func Post(api string, params .Values)(rs[]byte,err error){ resp,err:=http.PostForm(api, params) if err!=nil{ return nil ,err } defer resp.Body.Close() return ioutil.ReadAll(resp.Body) } //代码描述:基于GO的黄金数据接口调用代码实例 //关联数据:黄金数据 //css之before and after [代码] [C#]代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using https://www.sodocs.net/doc/e35704433.html,;

RSA加解密算法C语言的实现

#include #include #include #include #include #include #define MAX 100 #define LEN sizeof(struct slink) void sub(int a[MAX],int b[MAX] ,int c[MAX] ); struct slink { int bignum[MAX]; /*bignum[98]用来标记正负号,1正,0负bignum[99]来标记实际长度*/ struct slink *next; }; /*/--------------------------------------自己建立的大数运算库-------------------------------------*/ void print( int a[MAX] ) { int i; for(i=0;il2) return 1; if (l1=0;i--) { if (a1[i]>a2[i]) return 1 ; if (a1[i]

c语言课程设计-文件加密解密(含源代码)

C 语 言 课 程 设 计 实 验 报 告 实验名称:文件加密解密 院系:软件学院 学号: 日期:2012年9月3日—9月17日

一:设计题目 1:设计图形用户界面。 2:对文件进行加密并对加密文件进行保存。 3:对加密了的文件进行解密。 二:设计过程 设计过程中遇到的困难和解决方法: 1:不能很好地理解题意(通过老师的讲解)。 2:不知道如何设计加密解密程序(通过翻阅书籍和上网查找资料) 过程: 首先通过学习老师提供的资料了解大致的设计过程并懂得运用一些以前没有学习过的c语言。先利用文本文件设计出加密解密的主要过程并能运行。知道如何运用fopen将原文件打开并用fread将原文件内容读出来,然后进行加密设计并将加密的数据用fwrite写进指定的文件中并保存。然后读出加密的文件并解密并保存。最后在写出的程序中加入图形用户界面,运用window,box,gotoxy等进行设计。 三:源代码 #include /* 标准输入、输出函数 */ #include /* 标准库函数 */ #include //*字符串处理函数 */ #include /* 字符操作函数 */ #include #include #define key_down 80 #define key_up 72

#define key_esc 1 #define key_enter 28 #define SIZE 1 void box(int startx,int starty,int high,int width); int get_key(); char buf[20*20*4]; /*///////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////加密解密 */ void fun(char *list,char *sd) /*加密过程*/ { FILE *fp1,*fp2; char buf[1000]; /*文件临时存放处*/ register int ch; fp1=fopen("e:\list.txt","r"); /*用可读方式打开文件*/ fp2=fopen("e:\sd.txt","w"); /*用可写方式创建一个文件*/ if(fp1==NULL) { printf("cannot open file\n"); exit(1); } if(fp2==NULL) { printf("cannot build file\n"); exit(1); } ch=fgetc(fp1); /*读出打开文件的光标处的一个字符*/ while(!feof(fp1)) /*读出的字符不是最后的字符*/ { ch=ch<<1; /*加密方法*/ fputc(ch,fp2); /*加密的字符存放在指定的地方*/ ch=fgetc(fp1); } rewind(fp2); /*将光标移动到第一个字符前面*/ fread(buf,sizeof(buf),1,fp2); /*从文件的当前位置开始中读取buf中存放的数据*/ printf("%s",buf); /*fclose(fp1); fclose(fp2); */ }

使用C语言实现古典加密

实训一古典加密算法 一、实训目的 熟悉古典数据加密的工作原理,并且能够利用相关加密算法进行加解密。 二、实训环境 一台安装有Windows XP的计算机。 三、实训内容 用C编写程序实现对某一文件内容用恺撒加密法进行加密,然后用解密程序进行解密。 四、实训步骤 1、用C编写程序实现对某一文件内容用恺撒加密法进行加密。 2、用解密程序对密文进行解密。 五、实训效果检测 上交加密程序、解密程序、原文(.txt文档) 解:(1)使用的加密、解密程序代码如下: #include #include #include #include char encrypt(char ch,int n)/*加密函数,把字符向右循环移位n*/ { while(ch>='A'&&ch<='Z') { return ('A'+(ch-'A'+n)%26); } while(ch>='a'&&ch<='z') {

return ('a'+(ch-'a'+n)%26); } return ch; } void menu()/*菜单,1.加密,2.解密,3.暴力破解,密码只能是数字*/ { //clrscr(); printf("\n========================================================="); printf("\n1.Encrypt the file"); printf("\n2.Decrypt the file"); printf("\n3.Force decrypt file"); printf("\n4.Quit\n"); printf("=========================================================\n"); printf("Please select a item:"); return; } void main() { int i,n; char ch0,ch1; FILE *in,*out; char infile[20],outfile[20]; //textbackground(BLACK); //textcolor(LIGHTGREEN); //clrscr(); menu(); ch0=getch(); while(ch0!='4') { if(ch0=='1') { // clrscr(); printf("\nPlease input the infile:"); scanf("%s",infile);/*输入需要加密的文件名*/ if((in=fopen(infile,"r"))==NULL) { printf("Can not open the infile!\n"); printf("Press any key to exit!\n"); getch();

加密及解密算法(利用C语言)

利用VC++6.0 C语言进行设计加密: #include "stdio.h" #include"string.h" void main() { int i,k,h; char g[26]; printf("请输入字符窜\n"); gets(g); k=strlen(g); do{ for(i=0;i='a'&&g[i]<='z') g[i]-=32; for(i=0;i='A') g[i]+=3; else if(g[i]>'W'&&g[i]<='Z') g[i]-=23; } printf("%s\n",g); printf("0-退出任意键继续\n"); scanf("%d",&h); } while(h); } 2.进行解密算法 #include "stdio.h" #include"string.h" void main() { int i,k,h; char g[26]; printf("请输入字符窜\n");

gets(g); k=strlen(g); do{ for(i=0;i='d'&&g[i]<='z') g[i]-=3; else if(g[i]>'d'&&g[i]<='a') g[i]+=23; for(i=0;i='D'&&g[i]<='Z') g[i]-=3; else if(g[i]>'D'&&g[i]<='A') g[i]+=23; printf("%s\n",g); printf("0-退出任意键继续\n"); scanf("%d",&h); } while(h); }

C语言课程设计-文件加密解密

C语言程序设计课程设计

计算1313班C语言程序设计课程设计大纲 一、设计目的: 通过课程设计,学会把相关的理论知识和实际应用相结合,锻炼了独立实践的能力;学会了查阅与设计相关资料的能力。 二、设计内容: 设计题目: 学生使用C语言设计程序,产生如下界面,0-6对应不同功能,若不用汉字,可用拼音或英文表示。 ************************************************************************************** * * * 1--输入2--加密3--解密4--显示5—统计6—统计全部0--退出* * * *************************************************************************************** 请选择(0--6): 0.退出系统。 1.输入信息,并写入文本文件。 2.对给定的文件进行加密。 3.对给定的文件进行解密。 4.显示文本文件的内容。 5.统计某单词在文件中出现的次数。 *6. 统计在文件中各单词出现的次数(可选)。 三、设计思想: 主要思想为由总到分,由上到下的逐级分配任务的思想。通过主函数调用各个被调用的函数,再由被调用函数通过多个循环嵌套的使用实现各自的功能,最终达到程序的要求。 1.主函数中:先使用了switch选择结构来调用不同命令下所对应的被调用函

数,其中包括:输入函数shuru(),加密函数jiami(),解密函数jiemi(),显示函数show(),统计函数count1()、count2。在每个被调用函数中还多次调用了用来判断是否要继续的函数judge(),以达到循环的目的。在主函数中还多次使用清屏命令system(“cls”),以及刷新全部流的命令flushall()、fllush(stdin)使调用函数后,界面保持清洁,提高了程序的易读性。 2.输入函数中:while((c=getchar())!=EOF)的使用能提示使用者结束的命令,并且通过fputc(c,fp)把一个字符c写到由文件指针fp指定的磁盘文件上。 3.加密函数中:先定义两个指针,将输入的文件内容通过fputc(c+1,fp1);进行加密并保存到fp1所指定的文件上。保存成功后,使用remove(fname);语句删除掉原文件,并使用rename("jiami.txt",fname);语句将加密后的文件名改为已被删除的原文件名。 4.解密函数中:考虑到解密时的安全性问题,在进入解密系统时,需先输入进入解密系统的密码,因此在程序的主函数外先对解密系统密码进行初始值化,然后在进入解密系统时输入该密码就可进入。由于加密时是对每个文件内容都加上了20,所以解密时只需再减20即可。 5.显示函数中:while(!feof(fp))语句用来判断是否到了文件的末尾,可以用来保证文件的内容都被显示出来。 6.统计函数中:先定义一个字符串数组,将文件中的内容存到数组中,再使用tolower函数统一将数组所有字符转化为小写字母,将用户输入的字符也转化为小写字母,用strcmp来比较输入的字符是否与文件中的字符相等,若相等,则变量jishu加1,最后可以统计出所查单词在文件中的数目。l=strlen(word);语句表示用户输入字符的长度。 7.高级统计函数中:通过调用tol()自定义函数来判断文件中的字符是否是小写字母,若是的话,则将文件中的字符赋值给二维字符串数组cpy[][],而二维字符串数组则通过两个for循环嵌套来与自身进行比较,并且通过变量a的自增与自减来实现将重复被统计过的单词减去被多统计的次数,算出正确的单词个数。 四、实验小结: 1. 过多的嵌套级别可能会使程序难以理解,应避免使用超过3个级别的缩进。

c语言程序设计文件加密解密

程序报告设计 题目:加密解密处理 程序设计报告的电子文档(B10080128—程序设计.doc ) 一.老师对作业要求。 1:对学生课程设计两周的纪律及提交内容的要求: (1)规定上机的时间内不得无故缺勤,有事需要向指导老师书面请假; (2)上机时禁止玩游戏,屡教不改者,实习成绩可为不及格;(3)每人手头准备一至两本C/C++的有关工具书,上机前作好充分的准备,包括事先写好主要算法的程序 代码以保证充分利用上机的时间调试程序; (4)同组可以讨论思路,但是程序要自己完成,不可抄袭,若完全抄袭别人的,实习成绩可为不及格; (5)实习的最后阶段认真完成实习报告的电子文档。报告内容不得少于15页。 (6)每个学生最后提交的材料: 压缩文件一个,起名为:学号名_题目名.rar(如:B06020127_学生管理系统.rar)。该压缩文件中包含下列 几个文件:程序设计报告的电子文档(起名为:学号_程序设计.doc)、源程序文件(起名为:学号名_题目

名.cpp,如:B06020127_学生管理系统.cpp)、原始数据文件(如:stud.dat)、编译链接后得到的可执行 文件(起名为:学号名_题目名.exe) (7)请同学独立完成报告,若发现两份报告一模一样,则两人都按不及格论处,请各位同学珍惜自己的版权 ,也请指导老师严格把关。 附2:上机时间:每天上午8:00——11:20 附3:成绩的评定 根据学生平时的上机出勤情况、为上机所作的准备情况、上机时的表现、程序的完成情况、报告的完成情况 、验收答辩时的表现等综合打分。等级为:优秀、良好、中等、及格、不及格。 附4:课程设计报告具体内容要求 学生管理系统 (题目格式:宋体,3号,加粗,居中对齐) 一、课题内容和要求(格式:宋体,4号,加粗,两端对齐) 该部分可参考前面给出的问题描述再加以细化一些 (正文格式:宋体,小4号,不加粗,两端对齐,1.5倍行距)

DES算法(基于C语言,加密解密代码)

/* Note:Your choice is C IDE */ #include"stdio.h" #include"string.h" #define uchar unsigned char /**************************************************************************** ******************************明文转换声明部分*******************************/ //IP1置换表 int IP_1[64]={58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7}; //IP2逆置换表 int IP_2[64]={40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29,

36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25}; //E扩展置换表 int E_case[48]={32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1}; //S盒压缩 int S1[4][16]={14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7, 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8, 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0, 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13}; int S2[4][16]={15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10, 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5, 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,

C语言实现Vigenere密码加解密体制

#include #include #include void Encry() { char key[100]; char ch,temp; int L,i=0,j=0; if(getchar()=='\n') temp=' '; printf("请输入密钥: "); gets(key); L=strlen(key); printf("输入明文: "); while((ch=getchar())!='\n') { if(ch==' ') { i++; continue; } if(ch>='a'&&ch<='z') { printf("%c",(ch+key[j%L]-'a'-'a')%26+'A'); j++; } if(ch>='A'&&ch<='Z') { printf("%c",(ch+key[j%L]-'A'-'a')%26+'A'); j++; } if(j%L==0) printf(" "); i++; } putchar(ch); } void Decry() { char key[100];

char ch,temp; int L,i=0,j=0; if(getchar()=='\n') temp=' '; printf("请输入密钥: "); gets(key); L=strlen(key); printf("输入密文: "); while((ch=getchar())!='\n') { if(ch==' ') { i++; continue; } if(ch>='A'&&ch<='Z') { printf("%c",(ch-key[j%L]-'A'+'a'+26)%26+'a'); j++; } if(j%L==0) printf(" "); i++; } putchar(ch); } int Exit() { exit(0); } int main() { char ch; for(;;) { printf("请输入你的操作(e/E加密;d/D解密;q/Q退出):"); ch=getchar(); if(ch=='e'||ch=='E') Encry(); else if(ch=='d'||ch=='D')

c语言实现加密解密

c语言实现加密解密续--获得简单小软件 编写程序,实现对文本的加密及解密,要求在加密及解密时的原文件名和密文名从键盘输入,并在解密时验证用户信息即操作权限。 加密程序代码: #include main() { char c,filename[20]; FILE *fp1,*fp2; printf("请输入待加密的文件名:\n"); scanf("%s",filename); fp1=fopen(filename,"r"); fp2=fopen("miwen.txt","w"); do { c=fgetc(fp1); if(c>=32&&c<=126) { c=c-32; c=126-c; } if(c!=-1)

fprintf(fp2,"%c",c); } while(c!=-1); } 解密程序代码: #include #include main() { char c,filename[20]; char yanzhengma[20]; FILE *fp1,*fp2; printf("请输入待解密文件名:\n"); scanf("%s",filename); printf("请输入验证码:\n"); scanf("%s",yanzhengma); if(strcmp(yanzhengma,"shan")==0) { fp1=fopen(filename,"r"); fp2=fopen("yuanwen.txt","w"); do { c=fgetc(fp1);

if(c>=32&&c<=126) { c=126-c; c=32+c; } if(c!=-1) fprintf(fp2,"%c",c); } while(c!=-1); } else { printf("验证码错误!请重新输入:\n"); scanf("%s",filename); } } 运行结果: 文件加密:如需要加密的文件名为yusnwen.txt,则屏幕显示为: 如yuanwen.txt内容为: qing dao li gong da xue tong xin yu dian zi gong cheng xue yuan 2006 ji dain zi xin xi gong cheng zhuan ye

用C语言实现DES加密与解密

用C语言实现DES加密与解密 #include int IP[64] = { 58,50,42,34,26,18,10,2, 60,52,44,36,28,20,12,4, 62,54,46,38,30,22,14,6, 64,56,48,40,32,24,16,8, 57,49,41,33,25,17,9,1, 59,51,43,35,27,19,11,3, 61,53,45,37,29,21,13,5, 63,55,47,39,31,23,15,7 }; int IP_1[64] = { 40,8,48,16,56,24,64,32, 39,7,47,15,55,23,63,31, 38,6,46,14,54,22,62,30, 37,5,45,13,53,21,61,29, 36,4,44,12,52,20,60,28, 35,3,43,11,51,19,59,27, 34,2,42,10,50,18,58,26, 33,1,41,9,49,17,57,25 }; int E[48] = { 32,1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10,11,12,13, 12,13,14,15,16,17, 16,17,18,19,20,21, 20,21,22,23,24,25, 24,25,26,27,28,29, 28,29,30,31,32,1 }; int P[32]={16 ,7 , 20 , 21 , 29,12 ,28 , 17 , 1, 15 ,23 , 26 , 5, 18 ,31 , 10 , 2, 8 , 24 , 14 , 32,27, 3 , 9 , 19,13, 30 , 6 , 22,11 ,4 , 25 }; 19,11,3,60,52,44,36, 63,55,47,39,31,23,15,

加密与解密:一个简单的C语言示例

加密与解密:一个简单的C语言示例 写在前面 做大一年级的导生,碰巧一个同学问了一个C语言程序设计的题目。说是怎么都弄不对。我看了看,正好也是三年前我碰到的题目,仿佛还噙着旧日时光的泪痕。特此将题目与我的解法奉上,以祭奠那段逝去的时光。1.问题是什么?(1)使用要求的方法加密(容易) (2)如何去解密用以上方法加密过的内容(需要一点观察力)2.加密程序没什么好说的,直接按部就班来做就可以了,上程序:#include#includechar* encode(char code[]); //Define a function for encoding processint main() { char prim[100],*code; printf('Please input the words which needs to be encoded:\t'); gets(prim); code = encode(prim); printf('The encoded words are:\t%s\n',code); return 0;}char* encode(char prim[]) { int i,n,len; char code[100]; char temp_char,trans_char; int temp_num,trans_num; len = strlen(prim); for(i = 0;i //Consider about the corresponding number of character if (temp_char 'z' && temp_char >= 'a') temp_num = temp_char - 'a' + 1; else if (temp_char 'Z' && temp_char >= 'A') temp_num = temp_char - 'A' + 27; trans_num = temp_num*3 % 52; if (trans_num > 26

凯撒密码--C语言实现

凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方法进行通信,以确保信息传递的安全。他的原理很简单,说到底就是字母于字母之间的替换。下面让我们看一个简单的例子:“baidu”用凯撒密码法加密后字符串变为“edlgx”,它的原理是什么呢?把“baidu”中的每一个字母按字母表顺序向后移3位,所得的结果就是刚才我们所看到的密文。 /**凯撒密码实现 要求,将明文字母变成它后面第三个字母,后面的循环到前面! 公式为f(a)=(f(a)+3)%26 */ #include int main() { char P[100];/*定义明文长度*/ char C[100];/*定义密文长度*/ int K=3,i; printf("Please input Plaintext:\n"); /*输入明文*/ gets(P); /* 接受明文*/ for(i=0;P[i]!='\0';i++) { /*逐个判断字母的大小*/ if(P[i]>='a'&&P[i]<='z') /*小写字母*/ C[i]=(P[i]-'a'+K)%26+'a'; else if(P[i]>='A'&&P[i]<='Z')/*大写字母*/ C[i]=(P[i]-'A'+K)%26+'A'; else C[i]=' ';/*如果不是字母,转换为空格*/ } printf("The Ciphertext is :\n%s\n",C);/*输出密文*/ getch(); return 0; } 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 #include #include void menu()/*菜单,1.加密2.解密3.退出*/ {

RC4流密码算法之C语言实现

RC4流密码算法之C语言实现 RC4加密算法 RC4算法的原理很简单,包括初始化算法(KSA)和伪随机子密码生成算法(PRGA)两大部分。假设S-box长度和密钥长度均为为n。先来看看算法的初始化部分(用类C伪代码表示): for (i=0; i

sub_k=s((s+s[j])%n); } 位长可以自己随意设置,将256设置为你希望的即可我的C语言源码: 平台:windowsXP,VC++6.0 有什么大家可以讨论的地方请留言或发邮件至我邮箱: #include #include #include void swap(unsigned char *s1,unsigned char *s2) { char temp; temp=*s1; *s1=*s2; *s2=temp; } void re_S(unsigned char *S) { unsigned int i; for(i=0;i<256;i++) S[i]=i; } void re_T(unsigned char *T,char *key) { int i; int keylen; keylen=strlen(key); for(i=0;i<256;i++) T[i]=key[i%keylen]; } void re_Sbox(unsigned char *S,unsigned char *T) { int i; int j=0; for(i=0;i<256;i++) { j=(j+S[i]+T[i])%256;

相关主题