C语言怎么加密字符

Python026

C语言怎么加密字符,第1张

我没注意只要小写,我写的是大小写都可以的,另外附送输入验证。

#include <stdio.h>

#include <string.h>

int main()

{

    char str[]="00000",str2[]="00000",*p=str,*p2=str2

    printf("输入5个字母:")

    while(*p!=0)

    {

        scanf("%c",p)

        if(*p=='\n')

            continue

        if(*p<'A'||(*p>'Z'&&*p<'a') || *p>'z') //输入验证,必须是字母

        {

            printf("只能输入字母,请重新输入\n")

            p=str

            p2=str2

            fflush(stdin)//输入有错重新输入前清空缓冲区。fflush属于c扩展函数,正常使用没问题,如需在linux ggc上使用,考虑多次调用getchar函数来清空

        }

        else

        {

            *p2=(*p)+4

            if(*p2>90 && *p2<97)   //大写字母加4,最大位不超出

                *p2='A'+(*p2-90)-1

            if(*p2>122)            //小写字母加4,最大位不超出

                *p2='a'+(*p2-122)-1

            p2++

            p++

        }

    }

    printf("原字符串为:%s\n加密后的字符串为:%s\n",str,str2)

    return 0

}

问题不小,你表面用的是C

但是,好多地方不符合C的语法

,,比如:

for

(int

i=0

str[i]

!=

'\0'

i++)

还有,就是你好像没有弄清楚

,你要做什么似的,有好多无用的东西,

就像你的函数里的,key

,虽然你提到key了,但是你根本没有使用key,你只是使用45来进行加密,,还有就是一个文件

的大小,是不确定的,你用一个100个字符的字符串来存,有点那个不安全了,,如果稍长一点就会出问题,产生运行时错误。其实你这个加密和解密是一个可逆过程,用一个函数,就可以了,具体你想要的也不是太明白,就给你弄了一个简单一点加密和解密程序

,输入输出不是同一个文件

,不知道是不是你想要的。

#include

#include

#include

void

Decrypt()

{

char

fname[FILENAME_MAX]

char

fname2[FILENAME_MAX]

FILE*

fp

FILE*

fp1

int

key

char

c

printf("输入要加/解密文件的路径:\n")

scanf("%s",

fname)

printf("请输入密钥:\n")

scanf("%d",&key)

strcpy(fname2,fname)

strcat(fname2,".txt")

if(

(fp

=

fopen(fname,"r+"))

==

NULL)

{

printf("error")

exit(1)

}

if(

(fp1

=

fopen(fname2,"w+"))

==

NULL)

{

printf("error")

exit(1)

}

while(

(c

=

fgetc(fp))

!=

EOF)

{

c

=

c^key

fputc(c,fp1)

}

fcloseall()

}

int

main()

{

Decrypt()

return

0

}

如果想看一些好一点的加密算法

,我这里有一些,联系我发给你

,,