
加密程序代码:
#include<stdio.h>
main()
{
char c,filename[20]
FILE *fp1,*fp2
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<stdio.h>
#include<string.h>
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)
}
}
可能很长 ,这是在我以前一个程序里摘出来的。原理:用户输入创建密码,机器读取,并把每一位密码进行加密,这里就是把每一位的 ASCII码加一(也可以有其他的加密方式),然后保存在文件里。解密时从文件中读取保存的乱码,然后把它每一位的ascII码减一 在与你输入的密码比较,正确既可以进入。
#define CODE_SIZE 10
int password()
{
FILE *fp
char s1[CODE_SIZE], s2[CODE_SIZE], s3[CODE_SIZE], fun
while (1)
{
fp = fopen("password.txt", "r")
if (fp == NULL)
{
printf("第一次运行,请输入初始密码(最多8位):\n")
scanf("%s", s1)
printf("请再次输入初始密码:\n")
scanf("%s", s2)
if (strcmp(s1, s2) == 0)
{
fp = fopen("password.txt", "w+")
if (fp == NULL)
{
printf("创建文件失败退出\n")
getch()
exit(1)
}
else
{
//对s1加密
for (int i = 0i<CODE_SIZE&&s1[i] != ' 'i++)
{
s1[i] = s1[i] + i
}
fputs(s1, fp)
printf("初始密码创建完成.\n")
}
}
else
{
printf("两次输入的密码不一致!\n")
}
fclose(fp)
}
else
{
fgets(s1, CODE_SIZE, fp)
fclose(fp)
printf("输入密码:\n")
scanf("%s", s2)
//对s1解密
for (int i = 0i<CODE_SIZE&&s1[i] != ' 'i++)
{
s1[i] = s1[i] - i
}
loop:
if (strcmp(s1, s2) == 0)
{
printf("-----密码正确-----\n")
printf("-----请选择功能-----\n")
printf("-----1:修改密码-----\n")
printf("-----2:进入通讯录-----\n")
scanf("%d", &fun)
switch (fun)
{
case 1: printf("请输入新密码\n")
scanf("%s", s1)
printf("请再次输入新密码\n")
scanf("%s", s2)
if (strcmp(s1, s2) == 0)
{
fp = fopen("password.txt", "w+")
if (fp == NULL)
{
printf("文件错误!\n")
}
else
{ //对s1加密
for (int i = 0i<CODE_SIZE&&s1[i] != ' 'i++)
{
s1[i] = s1[i] + i
}
fputs(s1, fp)
fclose(fp)
printf("密码修改成功\n")
}
}
else
{
printf("两次输入的密码不一致,修改失败\n")
}
break
case 2: return 1
default: printf("无效指令\n")
}
}
else
{
printf("密码错误\n请重新输入\n")
scanf("%s", s2)
goto loop
}
}
printf("------------------\n\n\n\n")
}
}
#include <stdio.h>#include<string.h>
#define N 1000
void main()
{
char str[N]
int i
putchar('\n')
printf("********start ********\n")
printf("please input your code: ")
gets(str)
for(i=0str[i]!='\0'i++) //加密控制,仅对字母 *** 作,若是数字则不 *** 作
{
if((str[i]>='a'&&str[i]<'y')||(str[i]>='A'&&str[i]<'Y')) //用于对a至y及A至Y之间的字符加密
str[i]+=2
else if(str[i]=='y') //单独对y加密
str[i]='a'
else if(str[i]=='z') //单独对z加密
str[i]='b'
else if(str[i]=='Y') //单独对Y加密
str[i]='A'
else if(str[i]=='Z') //单独对Z加密
str[i]='B'
}
putchar('\n')
printf("the resoult we need is: ")
puts(str)
putchar('\n')
printf("********the end ********\n")
putchar('\n')
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)