我正在创建一个处理用户名和密码的c++类。
我试图对一些基本但有效的实践进行一些研究,以便在c++中处理这些信息,因此很难被人找到,例如,扫描内存和变量来确定信息。
简单地说,我指的是不需要太多工作的东西;我不想编写一个完整的密码库、随机寻址系统,甚至是哈希函数。
另外,我假设最好不要在变量中维护这个信息,并且在我不需要它的时候就把它处理掉?
编辑:
不,我不会将此信息保存到磁盘中,只会将其保存在内存中的变量中。
Edit2:
该类与平台无关,使用boost。
Edit3:
下面是函数的声明:
void authenticate(const std::string & user, const std::string & pass);发布于 2015-03-11 21:14:30
没有最基本的技术将保护密码从谁有一个调试器,可以访问内存!
因此,最安全的方法不是存储密码,而是只存储密码的散列。有许多可用的实现,例如这开源实现,一个来自受信任的源代码。
是的,当你不再需要它时,删除你的变量。也就是说:覆盖值,而不仅仅是销毁变量(如果你真的想安全的话,你可以在上面写随机的值,但这太过分了):
如果是字符串,那么值得提一下VoidStars的建议:
string pwd;
....
std::fill_n(&pwd[0], pwd.capacity()-1, 0xff); // really overwritehttps://stackoverflow.com/questions/28997295
复制相似问题