使用openssl时使用std::string
是否安全?
我目前正在使用std::vector<uint8_t>
来管理与openssl API一起使用的密钥,因为我不确定std::string
如何处理不可打印的字符。
答案 0 :(得分:1)
幸运的是,除了一些诸如短字符串优化之类的内容之外,std::vector<char>
和std::string
之间没有太多差异。
std::string
也不关心它的含义。
这是std::basic_string
中的一个不好的事情,遗憾的是其他案例。
答案 1 :(得分:0)
std::string
对可打印/不可打印的字符以及编码一无所知。例如,
std::string str;
for(int i = 0; i < 10; ++i){
str.push_back('\0');
}
是完全有效的字符串。
但安全性可能存在问题。您需要保证所有带加密密钥的内存在被释放时都应填充某些内容(可能为零)。