在我的网络项目中,为简单起见,我将XOR加密/解密与用户定义的密钥一起使用。我想出了以下功能。
std::string XOR(std::string data, std::string encrypted_key) {
char* key = new char [encrypted_key.length() + 1];
strcpy (key, encrypted_key.c_str());
std::string output = data;
for (int i = 0; i < data.size(); i++){
output[i] = data[i] ^ key[i % (sizeof(key) / sizeof(char))];
}
return output;
}
但是我对此事的安全性有严重的恐惧和怀疑。我担心strcpy可能会引起问题。因此,我什至从未使用过该函数,因此每次都使用snprintf
。但是在这里,它不起作用。谁能确认这是安全的?谢谢! (如果这是一个愚蠢的问题,请原谅)
答案 0 :(得分:0)
编辑:@JohnFilleau发表评论后,我将功能更改为此。我意识到自己做错了。谢谢!
std::string XOR(std::string data, std::string encrypted_key) {
std::string output = data;
for (int i = 0; i < data.size(); i++){
output[i] = data[i] ^ encrypted_key[i % encrypted_key.size()];
}
return output;
}