#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)
}
.
希望能够帮助你 ^_^ 也希望能够选为最佳答案!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)