C语言设计一个简单的加密解密程序

C语言设计一个简单的加密解密程序,第1张

C语言设计一个简单的加密解密程序如下:

加密程序代码:

#include<stdio.h>

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<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')

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12084844.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存