信息安全——凯撒密码

 

图片发自App

#include

#include

#include

#include

#define N 100

using namespace std;

//凯撒密码

//加密公式 f(a)=(a+3) mod 26

//解密公式 f(a)=(a+23) mod 26

void Encry(char *strI,int numB,int model);//加密公式函数

void Decry(char *strI,int numB,int model);//解密公式函数

int FileOut(char *strI);

int main()

{

char str[N];

int model;

int numB;

while(1)

{

cout<<"凯撒密码:请选择模式:\n";

cout<<"1.加密\n";

cout<<"2.解密\n";

cout<<"3.退出\n";

cin>>model;

cout<

switch(model)

{

case 1:

cout<<"请输入要加密的字符串:";

cin>>str;

cout<<"请输入该密码算法的偏移数量:";

cin>>numB;

Encry(str,numB,model);

cout<

break;

case 2:

cout<<"请输入要解密的字符串:";

cin>>str;

cout<<"请输入原密码算法的偏移数量:";

cin>>numB;

Decry(str,numB,model);

cout<

break;

case 3:

return 0;

break;

default:

break;

}

}

return 0;

}

void Encry(char *strI,int numB,int model)

{

//明文串 秘钥 功能模式

if(model==1)

{

for(int i=0; i

{

if(strI[i] >= 'A' && strI[i] <= 'Z')

{

strI[i] = ((strI[i]-'A')+numB)%26+'A';

}

else if(strI[i] >= 'a' && strI[i] <= 'z')

{

strI[i] = ((strI[i]-'a')+numB)%26+'a';

}

}

cout<<"加密完成:"<

FileOut(strI);

cout<<"已输出到文件!"<

}

else

{

cout<<"该模式不支持此项功能!"<

}

}

void Decry(char *strI,int numB,int model)

{

if(model==2)

{

int num;

num=26-numB;

for(int i=0; i

{

if(strI[i] >= 'A' && strI[i] <= 'Z')

{

strI[i] = ((strI[i]-'A')+num)%26+'A';

}

else if(strI[i] >= 'a' && strI[i] <= 'z')

{

strI[i] = ((strI[i]-'a')+num)%26+'a';

}

}

cout<<"解密完成:"<

}

else

{

cout<<"该模式不支持此项功能!"<

}

}

int FileOut(char *strI)

{

FILE *fp = NULL;

int iWrite=0;

int len=strlen(strI);

if( strI == NULL || len ==0 )

return false;

//! 打开文件句柄

if( (fp = fopen( "密文.txt","w" )) == NULL ) // 文本模式写

return false;

iWrite = fwrite(strI, 1, len, fp );

fclose(fp);

if( iWrite>0 )

return true;

else

return false;

}


你可能感兴趣的:(信息安全——凯撒密码)