① c语言编写程序,并加密数据
#include<stdio.h>
void passwordnum(long a);
int main(void)
{
long num;
while(!scanf("%d",&num))
{
while(getchar()!='\n'); //把数字后面的不纯净输入吸收掉
printf("Input Error! please retry anain.\n");
}
passwordnum(num);
printf("\n");
return 0;
}
void passwordnum(long a)
{
if(a>0)
{
passwordnum(a/10);
printf("%d",(a+2)%10);
}
else if(a<0)
{
printf("-");
a=-a;
passwordnum(a);
}
}
② c语言编写的程序,在输入密码时,如何加密
前言:当今社会是一个信息社会,你的个人信息和聊天记录极有可能被别有用心的人时时刻刻监视着,那么你想不想实现专属于两个人或一个小圈子的人在社交软件上的交流不被任何其他人读懂呢?
下面就给大家提供一个原理极其简单程序极其容易实现的C语言文字加密小程序的实现算法。
在键盘上录入了"今天晚上我不回家吃饭了",将这串字符的ASCLL码全部加1,打印出来是这样的"掘晚晤市嫌臣假接凑负绿"。怎么样,哈哈哈,是不是看完后丈二和尚摸不着头脑?
所以,用这种算法实现对汉字的加密和翻译绝对隐蔽!汉字在计算机中的编码比较复杂,一个汉字在Windows 10系统下的CodeBlocks编译器里占2个字符的位置,我记得我有做过测试,在Cent OS Linux系统下占3个字符的位置。
然而不管一个汉字占几个字符的位置,对每个字符的ASCLL码做加减乘除的运算和逆运算就可以实现对文字的加密和翻译。
下面向大家展示一下源代码(加密算法为将所有字符的ASCLL码加1,翻译算法为将所有字符的ASCLL码减1):
头文件部分:
主函数部分:
下面向大家展示一下加密与翻译的效果:
思考与提高:仅仅将所有字符的ASCLL码加1就实现对文字信息的加密了,会不会很容易被破译呢?请恕我不是密码学专家,这一点我无法回答,但是直观感觉这样加密确实有点简单。
那么我们就可以对字符进行多种更为复杂的处理,比如给所有字符加上一个正负变换的数列、给所有字符加上斐波那契数列等。总之,直观感觉就是越复杂越不容易被破译。
下面向大家展示一下给所有字符加上一个正负变换的数列的加密算法的源代码:
头文件部分:
主函数部分主要是用来调试的,与上面那个简单加密算法的主函数部分相同。
下面向大家展示一下使用这种复杂加密算法加密与翻译的效果:
用了加密程序后,画风是这样的:
③ 用C语言给文件加密解密,详细简单的代码;;;;用c打开一txt文件,怎么写【新手初学】
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
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);
}
void main(int argc,char *argv[])
{
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);
}
}
④ 用C语言设计一个加密 解密 密码 的程序。
// playFair 加密 你参考下 ...
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#define x 50
char MiYao[x],PassWord[x],AddPass[x],Table[5][5],Map[25];
bool Visit[27]={false};
char English[27]="abcdefghijklmnopqrstuvwxyz";
void Input()
{
printf("请输入密钥:\t"); scanf("%s",MiYao);
printf("请输入待加密密码:\t"); scanf("%s",PassWord);
}
void Fun_5x5()
{
int count = 0,V =0;
/*标记密钥内字符为: true*/
for(int i=0;MiYao[i]!='\0';i++)
if(strchr(English,MiYao[i])!=NULL)
Visit[strchr(English,MiYao[i])-English] = true;
/*执行密钥矩阵操作 并标记已使用字符:true*/
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
{
if(count<strlen(MiYao))
Table[i][j] = MiYao[count++];
else
{
while(Visit[V] != false) V++;
Table[i][j] = English[V];
Visit[V++] = true;
}
}
puts("∞∞∞密钥矩阵为∞∞∞");
for(int i=0;i<5;i++)
{ for(int j=0;j<5;j++)
printf("%3c",Table[i][j]);
puts("");
}
puts("∞∞∞∞∞∞∞∞∞∞∞");
}
int IsVisited(char ch)
{
return Visit[strchr(English,ch)-English]; //false 未出现过
}
void TabletoMap()
{ int count=0;
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
Map[count++]=Table[i][j];
Map[count]='\0';
}
void Judge()
{
int len = strlen(PassWord),i,j,k;
memset(AddPass,0,sizeof(char));
/*一对对去字母,剩下单个字母,则不变化,直接放入加密串中.*/
if(len%2){
AddPass[len-1] = PassWord[len-1];
len -=1;
}
/*一对中 密钥矩阵中 存在矩阵 eg.ab 先输出a同行顶点在输出b同行顶点*/
int row1,low1,row2,low2,a1,a2;
for(i=0;i<len;i+=2)
{
char c1,c2;
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;
a2 = strchr(Map,c2)-Map;
row2 = a2/5; low2 = a2%5;
/*一对中 字符出现在同行或同列 简单swap字符*/
if(row1 == row2 || low1 == low2)
{
AddPass[i] = c2;
AddPass[i+1] = c1;
}else{
AddPass[i] = Table[row1][low2];
AddPass[i+1] = Table[row2][low1];
}
}
}AddPass[len+1]='\0';
puts("加密后字符串:");
puts(AddPass);
puts("原串是:");
puts(PassWord);
}
int main()
{
Input();
Fun_5x5();
TabletoMap();
Judge();
return 0;
}
⑤ c语言实现密码加密
unsignedchar*encrypt(unsignedchar*psw,intenc){
intsum=0,i;
if(enc){
for(i=0;i<6;i++){
psw[i]-=15;
sum+=psw[i];
}
psw[6]=(unsignedchar)sum;
psw[7]=0;
}
else{
for(i=0;i<6;i++){
sum+=psw[i];
psw[i]+=15;
}
if((unsignedchar)sum!=psw[6]){
printf("Badpassword ");
psw[0]=0;
returnpsw;
}
else{
psw[6]=0;
}
}
for(i=0;i<3;i++){
unsignedchart=psw[i];
psw[i]=psw[5-i];
psw[5-i]=t;
}
returnpsw;
}
intmain()
{
unsignedcharpsw[128];
scanf("%s",psw);
printf("encodeto:%s ",encrypt(psw,1));
printf("decodeto:%s ",encrypt(psw,0));
return0;
}
⑥ c语言加密解密算法
这里使用的是按位加密,按ASCII码进行加密的算法自己写个,很容易的。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
void dofile(char *in_fname,char *pwd,char *out_fname);/*对文件进行加密的具体函数*/
void usage(char *name);
void main(int argc,char *argv[])/*定义main()函数的命令行参数*/
{
char in_fname[30];/*用户输入的要加密的文件名*/
char out_fname[30];
char pwd[10];/*用来保存密码*/
if(argc!=4)
{/*容错处理*/
usage(argv[0]);
printf("\nIn-fname:\n");
gets(in_fname);/*得到要加密的文件名*/
while(*in_fname==NULL)
{
printf("\nIn-fname:\n");
gets(in_fname);
}
printf("Password 6-8:\n");
gets(pwd);/*得到密码*/
while(*pwd==NULL || strlen(pwd)>8 || strlen(pwd)<6)
{
printf("Password 6-8:\n");
gets(pwd);
}
printf("Out-file:\n");
gets(out_fname);/*得到加密后你要的文件名*/
while(*in_fname==NULL)
{
printf("Out-file:\n");
gets(out_fname);
}
while(!strcmp(in_fname,out_fname))
{
printf("文件名不能和源文件相同\n");
printf("Out-file:\n");
gets(out_fname);
}
dofile(in_fname,pwd,out_fname);
printf("加密成功,解密请再次运行程序\n");
}
else
{/*如果命令行参数正确,便直接运行程序*/
strcpy(in_fname,argv[1]);
strcpy(pwd,argv[2]);
strcpy(out_fname,argv[3]);
while(*pwd==NULL || strlen(pwd)>8 || strlen(pwd)<6)
{
printf("Password faied!\n");
printf("Password 6-8:\n");
gets(pwd);
}
while(!strcmp(in_fname,out_fname))
{
printf("文件名不能和源文件相同\n");
printf("Out-file:\n");
gets(out_fname);
while(*in_fname==NULL)
{
printf("Out-file:\n");
gets(out_fname);
}
}
dofile(in_fname,pwd,out_fname);
printf("加密成功,解密请再次运行程序\n");
}
}
/*加密子函数开始*/
void dofile(char *in_fname,char *pwd,char *out_file)
{
FILE *fp1,*fp2;
register char ch;
int j=0;
int j0=strlen(pwd);
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(j0>=0)
{
ch=fgetc(fp1);
while(!feof(fp1))
{
fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*异或后写入fp2文件*/
ch=fgetc(fp1);
}
j0--;
}
fclose(fp1);/*关闭源文件*/
fclose(fp2);/*关闭目标文件*/
}
void usage(char *name)
{
printf("\t=======================File encryption======================\n");
printf("\tusage: %s In-fname password out_fname\n",name);
printf("\tExample: %s file1.txt 12345678 file2.txt\n",name);
}