字符串加密解密
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;
}
/* 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++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性