【发布时间】:2019-01-23 01:58:21
【问题描述】:
我正在制作两个基本的加密和解密函数只是为了加密字符串,但是当输入某些字符时它似乎不起作用......
这是我的代码:
#include <iostream>
#include <string>
using namespace std;
char characters[27][2] = {"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 encrypted[27][2] = {"!","@","#","$","\%","^","&","*","(",")","_","-","+","=","~","`","{","}","[","]","|","\\",":",";","'","."};
bool replace(std::string& str, const std::string& from, const std::string& to) {
size_t start_pos = str.find(from);
if(start_pos == std::string::npos)
return false;
str.replace(start_pos, from.length(), to);
return true;
}
string encrypt(string str) {
int i = -1;
for(string c : characters) {
i += 1;
replace(str,c,encrypted[i]);
}
return str;
}
string decrypt(string str) {
int i = -1;
for(string e : encrypted) {
i += 1;
replace(str,e,characters[i]);
}
return str;
}
int main() {
string str = "testing-foo!";
str = encrypt(str);
cout << str;
str = decrypt(str);
cout << str;
}
我在编译时使用 std c++ 11,因此我可以初始化数组。
变量 str 的输出加密版本是 ]%[t(=&-^~o! 和 ]%[t(=&-^~o! 是 testinglfooa。它似乎将 - 替换为 l 和 ! 替换为 a。
任何帮助将不胜感激!
【问题讨论】:
-
为什么
characters和encrypted是静态二维数组? -
@Bentoy13 什么意思?
-
@JesperJuhl 虽然这是一个非常有效的观点,但我非常怀疑 OP 是否出于实际安全目的而希望这样做。它看起来更像是一个练习,而不是一个真正的应用程序。
-
如果我超出数组的大小会发生什么?
标签: c++ arrays string c++11 encryption