凯撒密码实现英文短句的加解密

凯撒密码实现英文短句的加解密,第1张

1.将“We are students.”这个英文词句用k=4的凯萨密码翻译成密码

1. 恺撒密码,

作为一种最为古老的对称加密体制,他的基本思想是:

通过把字母移动一定的位数来实现加密和解密。

例如,如果密匙是把明文字母的位数向后移动三位,那么明文字母B就变成了密文的E,依次类推,X将变成A,Y变成B,Z变成C,由此可见,位数就是凯撒密码加密和解密的密钥。

如:ZHDUHVWXGHQWV(后移三位)

2. 凯撒密码,

是计算机C语言编程实现加密和解密。挺复杂的。你可以研究一下哦。

2.将凯撒密码(K=7)的加密、解密过程用C语言编程实现

/*

声明:MSVC++6.0环境测试通过

*/

#include<stdio.h>

#include<ctype.h>

#define maxlen 100

#define K 7

char *KaisaEncode(char *str)//加密

{

char *d0

d0=str

for(*str!='\0'str++)

{

if(isupper(*str))

*str=(*str-'A'+K)%26+'A'

else if(islower(*str))

*str=(*str-'a'+K)%26+'a'

else

continue

}

return d0

}

char *KaisaDecode(char *str)//解密

{

char *d0

d0=str

for(*str!='\0'str++)

{

if(isupper(*str))

*str=(*str-'A'-K+26)%26+'A'

else if(islower(*str))

*str=(*str-'a'-K+26)%26+'a'

else

continue

}

return d0

}

int main(void)

{

char s[maxlen]

gets(s)

puts(KaisaEncode(s))

puts(KaisaDecode(s))

return 0

}

3.将凯撒密码X的加密、解密过程用C语言编程实现

(2)kaiser加密算法 具体程序:#include #include char encrypt(char ch,int n)/*加密函数,把字符向右循环移位n*/ { while(ch>='A'&&ch='a'&&ch<='z') { return ('a'+(ch-'a'+n)%26)} return ch} void menu()/*菜单,1.加密,2.解密,3.暴力破解,密码只能是数字*/ { clrscr()printf("\n=========================================================")printf("\n1.Encrypt the file")printf("\n2.Decrypt the file")printf("\n3.Force decrypt file")printf("\n4.Quit\n")printf("=========================================================\n")printf("Please select a item:")return} main() { int i,nchar ch0,ch1FILE *in,*outchar infile[20],outfile[20]textbackground(BLACK)textcolor(LIGHTGREEN)clrscr()sleep(3);/*等待3秒*/ menu()ch0=getch()while(ch0!='4') { if(ch0=='1') { clrscr()printf("\nPlease input the infile:")scanf("%s",infile);/*输入需要加密的文件名*/ if((in=fopen(infile,"r"))==NULL) { printf("Can not open the infile!\n")printf("Press any key to exit!\n")getch()exit(0)} printf("Please input the key:")scanf("%d",&n);/*输入加密密码*/ printf("Please input the outfile:")scanf("%s",outfile);/*输入加密后文件的文件名*/ if((out=fopen(outfile,"w"))==NULL) { printf("Can not open the outfile!\n")printf("Press any key to exit!\n")fclose(in)getch()exit(0)} while(!feof(in))/*加密*/ { fputc(encrypt(fgetc(in),n),out)} printf("\nEncrypt is over!\n")fclose(in)fclose(out)sleep(1)} if(ch0=='2') { clrscr()printf("\nPlease input the infile:")scanf("%s",infile);/*输入需要解密的文件名*/ if((in=fopen(infile,"r"))==NULL) { printf("Can not open the infile!\n")printf("Press any key to exit!\n")getch()exit(0)} printf("Please input the key:")scanf("%d",&n);/*输入解密密码(可以为加密时候的密码)*/ n=26-nprintf("Please input the outfile:")scanf("%s",outfile);/*输入解密后文件的文件名*/ if((out=fopen(outfile,"w"))==NULL) { printf("Can not open the outfile!\n")printf("Press any key to exit!\n")fclose(in)getch()exit(0)} while(!feof(in)) { fputc(encrypt(fgetc(in),n),out)} printf("\nDecrypt is over!\n")fclose(in)fclose(out)sleep(1)} if(ch0=='3') { clrscr()printf("\nPlease input the infile:")scanf("%s",infile);/*输入需要解密的文件名*/ if((in=fopen(infile,"r"))==NULL) { printf("Can not open the infile!\n")printf("Press any key to exit!\n")getch()exit(0)} printf("Please input the outfile:")scanf("%s",outfile);/*输入解密后文件的文件名*/ if((out=fopen(outfile,"w"))==NULL) { printf("Can not open the outfile!\n")printf("Press any key to exit!\n")fclose(in)getch()exit(0)} for(i=1i<=25i++)/*暴力破解过程,在察看信息正确后,可以按'Q'或者'q'退出*/ { rewind(in)rewind(out)clrscr()printf("==========================================================\n")printf("The outfile is:\n")printf("==========================================================\n")while(!feof(in)) { ch1=encrypt(fgetc(in),26-i)putch(ch1)fputc(ch1,out)} printf("\n========================================================\n")printf("The current key is: %d \n",i);/*显示当前破解所用密码*/ printf("Press 'Q' to quit and other key to continue。

\n")printf("==========================================================\n")ch1=getch()if(ch1=='q'||ch1=='Q')/*按'Q'或者'q'时退出*/ { clrscr()printf("\nGood Bye!\n")fclose(in)fclose(out)sleep(3)exit(0)} } printf("\nForce decrypt is over!\n")fclose(in)fclose(out)sleep(1)} menu()ch0=getch()} clrscr()printf("\nGood Bye!\n")sleep(3)}。

4.怎样编写程序:实现恺撒密码加密单词"julus"

用下面程序:新建个txt,放进去任意单词,设置#define N 5中的值,实现字母移位,达到加密目的。

本程序提供解密功能/************************************************************************//* 版权所有:信息工程学院 王明 使用时请注明出处!! *//* 算法:凯撒密码体制 e799bee5baa6e4b893e5b19e31333264643062 *//************************************************************************/#include #define N 5void jiami(char namea[256]) { FILE *fp_jiami,*fp_file2char cfp_jiami=fopen(namea,"rb")fp_file2=fopen("file2.txt","wb")while(EOF!=(fscanf(fp_jiami,"%c",&c))) { if((c>='A'&&c='a'&&c='A'&&c='a'&&c='a'&&c='A'&&c='a'&&c='A'&&c='a'&&c='A'&&c<='Z')c=c+32 } fprintf(fp_file3,"%c",c)} fclose(fp_file3)fclose(fp_jiemi)}int main(){ char name[256]int nprintf("输入你要 *** 作的TXT文本:"); gets(name)printf("\n请选择需要进行的 *** 作:\n")printf(" 1:加密 2:解密 \n")printf("输入你的选择:"); scanf("%d",&n)switch(n) { case 1:{jiami(name)printf("\t加密成功!!\n\n")break} case 2:{jiemi(name)printf("\t解密成功!!\n\n")break} default:{printf("输入 *** 作不存在!");} } return 0}。

5.谁有PYTHON编写的凯撒密码的加密和解密代码

给你写了一个.

def convert(c, key, start = 'a', n = 26):

a = ord(start)

offset = ((ord(c) - a + key)%n)

return chr(a + offset)

def caesarEncode(s, key):

o = ""

for c in s:

if c.islower():

o+= convert(c, key, 'a')

elif c.isupper():

o+= convert(c, key, 'A')

else:

o+= c

return o

def caesarDecode(s, key):

return caesarEncode(s, -key)

if __name__ == '__main__':

key = 3

s = 'Hello world!'

e = caesarEncode(s, key)

d = caesarDecode(e, key)

print e

print d

运行结果:

Khoor zruog!

Hello world!

它是一种代换密码。据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。

凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。

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

}


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

原文地址: http://outofmemory.cn/yw/11293261.html

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

发表评论

登录后才能评论

评论列表(0条)

保存