【发布时间】:2015-05-13 20:56:52
【问题描述】:
我正在创建一个处理用户名和密码的 c++ 类。
我试图对一些基本但有效的做法进行一些研究,以便我在 c++ 中处理这些信息,因此其他人不容易找到它,例如,扫描内存和变量以确定信息。
我所说的初级,是指不需要大量工作的东西;我不想编写整个密码库、随机寻址系统,甚至是散列函数。
另外,我假设最好不要将这些信息保存在变量中,并在我不需要它时立即删除它?
编辑:
不,我不会将此信息保存到磁盘,只将其保存在内存中的变量中。
编辑2:
该类独立于平台并使用 boost。
编辑3:
这是函数的声明:
void authenticate(const std::string & user, const std::string & pass);
【问题讨论】:
-
您要存储到磁盘吗?如果是这样,请计划在哈希+加盐方面付出一些努力。如果它仅在内存中,那么在大多数平台上这没什么大不了的,因为您需要管理员/调试器权限才能访问另一个进程的内存。如果这是 Windows,您可以使用 bcrypt.h 访问安全哈希。
-
如果您不打算安全地存储您的密码(换句话说,使用某种散列),那么您最好以明文形式存储它们。只需确保通知系统的任何用户就是这种情况,这样他们就可以选择不使用该产品。
-
@VoidStar 查看我的编辑;不,我不会将这些信息存储到磁盘,只有内存。此外,该类独立于平台并使用 boost。
-
@MatsPetersson 现在检索此用户和密码的函数只是将它们作为 const string &,这不是已经暴露了信息吗?什么是替代方案?在使用用户名初始化这些变量并通过之前,不会发生散列?
-
然后,我假设密码和一般系统一样安全——换句话说,如果“外部”有人可以访问它,那么密码就是不安全的。如果它是“安全”机器,那么密码就是安全的。如果有人知道你的软件是如何工作的,他们可以闯入“处理密码”功能,查看密码。
标签: c++ encryption cryptography passwords