C ++我对此功能的安全性有疑问

时间:2020-05-05 02:11:11

标签: c++

在我的网络项目中,为简单起见,我将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。但是在这里,它不起作用。谁能确认这是安全的?谢谢! (如果这是一个愚蠢的问题,请原谅)

1 个答案:

答案 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;
}
相关问题