C++编程 凯撒加密

C++编程 凯撒加密,第1张

#include<iostream>

#include<string>

using namespace std

void  encrypt(string &s)//加密

{

 

 int i=s.length()

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

 {

  if('A'<=s[j]&&s[j]<='Z')

  {

   if('A'<=s[j]&&s[j]<='W')

    s[j]+=3

   else

    s[j]-=23

   //cout<<s[j]

   s[j]+=32

   //cout<<s[j]<<endl

  }

  else if('a'<=s[j]&&s[j]<='z')

  {

   if('a'<=s[j]&&段羡和s[j]<='w')

    s[j]+=3

   else

 派念   s[j]-=23

   //cout<<s[j]

   s[j]-=32

   //cout<<s[j]<<endl

   

  }

  

 }

}

int main()//测试

{

 string xy

 cout<<"输入字符串"<<endl

 cin>>xy

 encrypt(xy)

 cout<握盯<xy<<endl

 return 0

}

听说回答的够长才能够自动采纳

(2)kaiser加密算法

具体程序:

#include<stdio.h>

#include<conio.h>

char encrypt(char ch,int n)/*加密函数,把字符向右循环移位n*/

{

while(ch>='A'&&ch<='Z')

{

return ('A'+(ch-'A'汪晌+n)%26)

}

while(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,n

char ch0,ch1

FILE *in,*out

char 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-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("\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)

}

.

希望能够帮助你 ^_^ 也希望能够选为最佳答案!


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存