凯撒密码 C语言

Python010

凯撒密码 C语言,第1张

#include<stdio.h>

#include<string.h>

void main ()

{

char str[100]

char str1[100]

printf("输入字符串:")

scanf("%s",&str)

int len

len=strlen(str)

for(int i=0i<leni++)

{

str1[i]=(str[i]-97+3)%26+97

}

str1[len]='\0'

printf ("密文为:%s\n",str1)

}

凯撒密码就是简单的加上一个数,'a'+3='d''z'+3='c' 假设原文全是小写字母,那么 char plain[N]={...}//明文 char cipher[N]={}//密文 int key=3int i=0,tempfor(i=0i<Ni++) {if(plain[i]!=' ') {temp=plain[i]+key-'a'temp=temp%26cipher[i]=temp+'a'} else cipher[i]=plain[i]} 这样就完成了加密,密文数组里面就是对原文加密后的密文,key是密钥。

#include <stdio.h>

#define isletter( c )    ( ((c)>='a'&&(c)<='z') || ((c)>='A'&&(c)<='Z') )

void Enc( const char *str, char *out, int key )

{

    int i = 0 

    while( str[i] )

    {

        if ( isletter( str[i] ) )

        {

            out[i] = str[i] + key

            if ( ! isletter( out[i])  )

                out[i] -= 26

        }

        else

            out[i] = str[i]

        i++

    }

    out[i] = 0

}

void Denc( const char *str, char *out, int key )

{

    int i=0

    while( str[i] )

    {

        if ( isletter( str[i] ) )

        {

            out[i] = str[i] - key

            if ( ! isletter( out[i] ) )

                out[i] += 26

        }

        else

            out[i] = str[i]

        i++

    }

    out[i] = 0

}

int main()

{

    char  out[100], out2[100]

    Enc( "THE QUICK BROWn fox jumps over THE LAZY DOG", out, 3 )

    printf( "%s\n", out )

    Denc( out, out2, 3 )

    printf( "%s\n", out2 )

}