C++对凯撒密码的操作

来源:百度知道 编辑:UC知道 时间:2024/05/29 11:49:01
void crack(char*pin);
对密文pin进行穷举法攻击,在屏幕上显示所有(25个)所有可能密钥及原
文,最后根据原文意义确定密钥。
跪求高手用C语言解答!

#include <iostream>
using namespace std;

void crack(char *pin)
{
char *str=new char[strlen(pin)+1];
strcpy(str,pin);
cout<<str<<endl;;
for(int i=1;i<26;i++)
{
char *p=str;
while(*p)
{
if(*p>='A' && *p<='Z')
{
*p+=1;
if(*p>'Z') *p-=26;
}
else if(*p>='a' && *p<='z')
{
*p+=1;
if(*p>'z') *p-=26;
}
p++;
}
cout<<i<<':'<<str<<endl;
}
delete []str;
}

void main()
{
crack("J mpwf zpv");
}

可以看到,当偏移值为25时,得到原文I love you