您的位置:首页 > 编程语言 > C语言/C++

字符串加密解密

2016-02-25 14:24 344 查看
/************************************************************************/

/* 1、对输入的字符串进行加解密,并输出。

2加密方法为:

当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;

当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;

其他字符不做变化。

3、解密方法为加密的逆过程。

接口描述:

实现接口,每个接口实现1个基本操作:

void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出

说明:

1、字符串以\0结尾。

2、字符串最长100个字符。

int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出

说明:

1、字符串以\0结尾。

2、字符串最长100个字符。

输入:输入一串要加密的密码

输入一串加过密的密码

输出:输出加密后的字符

输出解密后的字符

例 输入 abcdefg BCDEFGH ****&&&

输出 BCDEFGH abcdefg ****&&&                                                                     */
/************************************************************************/

#include <iostream>
#include <string>
using namespace std;
/************************************************************************/
/* 加密函数 */
/************************************************************************/
string Encrypt(string data){
string encrypted(data);
char temp;
for (int i = 0; i < data.size();++i)
{
if (data[i] >= 'a'&&data[i] <= 'z')
temp = data[i] - 32;
else if (data[i] >= 'A'&&data[i] <= 'Z')//大Z变成小z,实际应该变成小a
temp = data[i] + 32;
else if (data[i]>='0'&&data[i]<='9')
{
temp = data[i]; //等于本身
}
else{ //别的符号,先减1,因为后面统一加1
temp = data[i] - 1;
}
switch (temp) //特殊情况,特殊处理
{
case '9':
encrypted[i] = '0';
break;
case 'z':
encrypted[i] = 'a';
break;
case 'Z':
encrypted[i] = 'A';
break;
default:
encrypted[i] = temp + 1; //别的都加1
break;
}
}
return encrypted;
}
/************************************************************************/
/* 解密函数 */
/************************************************************************/
string unEncrypt(string data){
string encrypted(data);
char temp;
for (int i = 0; i < data.size(); ++i)
{
if (data[i] >= 'a'&&data[i] <= 'z')
temp = data[i] - 32;
else if (data[i] >= 'A'&&data[i] <= 'Z')//大Z变成小z,实际应该变成小a
temp = data[i] + 32;
else if (data[i] >= '0'&&data[i] <= '9')
{
temp = data[i]; //等于本身
}
else{ //别的符号
temp = data[i] + 1;
}
switch (temp) //特殊情况,特殊处理
{
case '0':
encrypted[i] = '9';
break;
case 'a':
encrypted[i] = 'z';
break;
case 'A':
encrypted[i] = 'Z';
break;
default:
encrypted[i] = temp -1;
break;
}
}
return encrypted;
}

int main(){
string input;//使用string类
string encrypt;
string unencrypt;
cout << "输入需要加密的字符串:" << endl;
while (getline(cin,input))
{
cout << "输出加密后的字符串:" << endl;
encrypt = Encrypt(input);
cout << encrypt << endl;

cout << "输出解密后的字符串:" << endl;
unencrypt = unEncrypt(encrypt);
cout << unencrypt << endl<<endl;
cout << "输入需要加密的字符串:" << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 笔试面试题