C++实现置换加密、解密

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息安全技术实验报告———置换加密、解密的C++实现

石河子大学

信息科学与技术学院

学号:2011508154

姓名:李海东

置换加密、解密的C++实现

【我的目的】编写置换加密解密算法的 C++ 实现。

【我的加密、解密思想】第一步,输入一个加密整数。

第二步,输入加密明文string_old,长度为 size。

第三步,进行加密,结果保存在 string_encrytion 中。

第四步,解密,结果保存在string_decrytion 中。

第五步,输出加密后的密文。

第六步,输出对加密前的明文和加密并解密后的密文,进行比较,判断两个数组是否一致,从而得知算法是否正确。

【我的实验】

1、置换加密、解密算法的C++实现(可以在VC6.0上运行):

#include

using namespace std;

#define MAXLENGTH 500//明文最大长度

int size = 0;//明文实际长度

char string_old[MAXLENGTH];

char string_encrytion[MAXLENGTH];

char string_decrytion[MAXLENGTH];

int uint;//保存置换长度整数

char string_low[] =

{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

char string_upper[] =

{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

/////////////////////////////////////////////////////////

//加密算法

void exchange()

{

cout << " 请输入置换长度整数:";

cin >> uint;

cout << " 请输入明文字符串(由52个大小写字母组成,以#结束)" << endl;

for(int i = 0; i < MAXLENGTH; i++)

{

cin >> string_old[i];

if(string_old[i] == '#')

break;

}

size = i;

for(i = 0; i < size; i++)

{

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

{//判断是否为大写字母,对大写字母进行加密

for(int j = 0; j < 26; j++)

if(string_old[i] == string_upper[j])

{

j = j - uint;

if(j < 0)

j += 26;

string_encrytion[i] = string_upper[j];

break;

}

}

else

{

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

{//对小写字母进行加密

for(int j = 0; j < 26; j++)

if(string_old[i] == string_low[j])

{

j = j - uint;

if(j < 0)

j += 26;

string_encrytion[i] = string_low[j];

break;

}

}

else

string_encrytion[i] = string_old[i];

}

}

}

////////////////////////////////////////////////////////////////

//解密算法

void unexchange()

{

for(int i = 0; i < size; i++)

{

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

{//对大写字母进行解密

for(int j = 0; j < 26; j++)

if(string_encrytion[i] == string_upper[j])

{

j = (j + uint) % 26;

string_decrytion[i] = string_upper[j];

break;

}

}

else

{

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

{//对小些字母进行解密

for(int j = 0; j < 26; j++)

if(string_encrytion[i] == string_low[j])

{

j = (j + uint) % 26;

相关文档
最新文档