C语言 字符串加密

Python010

C语言 字符串加密,第1张

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main(void)

{

    char c[100]

    int  k

    int  len,i,temp

    scanf("%s",c)

    scanf("%d",&k)

    len = (int)strlen(c)

    k = k%26

    for(i=0i<leni++)

    {

        if (c[i] >= 'a' && c[i] <= 'z')

        {

            if(c[i]+k > 'z')

            {

                temp = 'z'-c[i]

                temp = k - temp - 1

                c[i]='a'+temp

            }

            else

            {

                c[i]+=k

            }

        }

        else if (c[i] >= 'A' && c[i] <= 'Z')

        {

            if(c[i]+k > 'Z')

            {

                temp = 'Z'-c[i]

                temp = k - temp - 1

                c[i]='A'+temp

            }

            else

            {

                c[i]+=k

            }

        }

        else

        {

            /* do nothing */

        }

    }

    printf("%s\n",c)

    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

}

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

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

,,