用C语言做一个加密或者解密的程序

提示的方法是将原文一次和密钥做异或,密钥长度为6-128个字符长。求高人帮助~~

搜狐博客 > 2WDragon > 日志 > C++/C 2008-07-17 | [转贴] 采用文件逐字节与密码异或方式对文件进行加密 标签: 异或加密
/*给文件加密的技术很多,其中又分为不同等级,以适合不同场合的需要.这里给出最简单的文件加密技术,即采用文件逐字节与密码异或方式对文件进行加密,当解密时,只需再运行一遍加密程序即可.下面是一个实例程序,能对任意一个文件进行加密,密码要求用户输入,限8位以内(当然你可以再更改).程序有很好的容错设计,这是我们应该学习的.
Turbo 2.0 pass. give file a password! */
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
void dofile(char *in_fname,char *pwd,char *out_fname);
/*对文件进行加密的具体函数*/
void main(int argc,char *argv[])/*定义main()函数的命令行参数*/
{
char in_fname[30];/*用户输入的要加密的文件名*/
char out_fname[30];
char pwd[8];/*用来保存密码*/
if(argc!=4)
{/*容错处理*/
printf("\nIn-fname:\n");
gets(in_fname);/*得到要加密的文件名*/
printf("Password:\n");
gets(pwd);/*得到密码*/
printf("Out-file:\n");
gets(out_fname);/*得到加密后你要的文件名*/
dofile(in_fname,pwd,out_fname);
}
else
{/*如果命令行参数正确,便直接运行程序*/
strcpy(in_fname,argv[1]);
strcpy(pwd,argv[2]);
strcpy(out_fname,argv[3]);
dofile(in_fname,pwd,out_fname);
}
}
/*加密子函数开始*/
void dofile(char *in_fname,char *pwd,char *out_file)
{
FILE *fp1,*fp2;
register char ch;
int j=0;
int j0=0;
fp1=fopen(in_fname,"rb");
if(fp1==NULL)
{
printf("cannot open in-file.\n");
exit(1);/*如果不能打开要加密的文件,便退出程序*/
}
fp2=fopen(out_file,"wb");
if(fp2==NULL)
{
printf("cannot open or create out-file.\n");
exit(1);/*如果不能建立加密后的文件,便退出*/
}
while(pwd[++j0]);
ch=fgetc(fp1);
/*加密算法开始*/
while(!feof(fp1))
{
fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*异或后写入fp2文件*/
ch=fgetc(fp1);
}
fclose(fp1);/*关闭源文件*/
fclose(fp2);/*关闭目标文件*/
}/*程序结束*/
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言实现字符串的加密和解密
程序分析:本例中使用的加密算法相对简单,它是通过将字符串中的每个字符与其在字符串中的位置加上一个偏移值5来进行加密的。具体代码如下:cryptograph[i] = text[i] + i + 5;以输入的字符串"helloworld"为例,其中第一个字符"h"在字符串中的位置是0,那么它对应的密文字符就是"h" + 0 + ...

c语言文件加密和解密
c语言文件加密和解密方法如下:1、首先打开VC++6.0;2、选择文件,新建;3、选择C++ source file 新建一个空白文档;4、声明头文件 include<stdio.h> include<stdlib.h> include<string.h> 首先写个加密函数,算法就是简介里说的;void EncryptFile(FILE *sfp,FILE *dfp,char pwd){char ch;if(...

C语言程序题(加密解密)
*s+26-n:*s-n;}int main(){ char s[200]; int n; gets(s); scanf("%d",&n); jiami(s,n); puts(s); jiemi(s,n); puts(s); return 0;}

用C语言设计一个加密 解密 密码 的程序。
c1 = PassWord[i];c2 = PassWord[i+1];\/*一对中 两字母相同 无变化*\/ \/*一对中 有字母不在密钥矩阵中 无变化*\/ if(c1 == c2 || ( !IsVisited(c1)||!IsVisited(c2))){AddPass[i] = c1;AddPass[i+1]=c2;}else{ a1 = strchr(Map,c1)-Map;row1 = a1\/5;low1 = a1%5;a...

如何用C语言对文件进行加密和解密?
\/\/ 对应元素异或进行加密\/解密 \/\/ 另外因为是用异或方法,所以加密和解密就是同一个程序 \/\/ 即按照同样的加密即是对文件的解密 include <stdio.h> include <string.h> include <ctype.h> include <conio.h> include <stdlib.h> char filename[256]; \/\/ 原文件 char password[256]; \/\/ ...

利用C语言实现移位加密和解密算法
)a[i] += 2;printf("%s",a );} 这个是往后推2的解密。g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle.解密试试吧~~加密的话 改动三个地方就行 自己试试吧 哈哈 ...

用c语言设计一个简单地加密算,解密算法,并说明其中的原理
可能很长 ,这是在我以前一个程序里摘出来的。原理:用户输入创建密码,机器读取,并把每一位密码进行加密,这里就是把每一位的 ASCII码加一(也可以有其他的加密方式),然后保存在文件里。解密时从文件中读取保存的乱码,然后把它每一位的ascII码减一 在与你输入的密码比较,正确既可以进入。define...

写一个加密程序,命名为encrypt-学号.c
c语言文件加密和解密方法如下: 1、首先打开VC++6.0; 2、选择文件,新建; 3、选择C++ source file 新建一个空白文档; 4、声明头文件 #include #include #include 首先写个加密函数,算法就是简介里说的; void EncryptFile(FILE *sfp,FILE ...

用C语言编程恺撒密码加密解密程序
include <stdio.h>#define isletter( c ) ( ((c)>='a'&&(c)<='z') || ((c)>='A'&&(c)<='Z') )void Enc( const char *str, char *out, int key ){ int i = 0; while( str[i] ) { if ( isletter( str[i] ) ) { out[i] = str[i] +...

凯撒密码(Caesar)的原理和算法实现(C语言)
加密的核心公式是:f(a) = (a + N) mod 26,其中a代表原始字母,N是位移数,解密则使用相反的移位量:f(a) = (a + (26 - N)) mod 26。在C语言中,我们可以通过以下代码实现凯撒密码的加密和解密功能,代码逻辑清晰,处理了大小写字母的移位操作:```cppint kaisa_encrypt(char* text, ...

相似回答