使用用户密码加密
Encrypting using user's password
我想使用WINAPI在windows机器上使用登录用户的密码加密给定的数据。我一直在寻找一个使用令牌(或类似的东西)的函数,但我找不到。
有人知道怎么做吗?
谢谢!: -)
Windows Data Protection API听起来就是你需要的。CryptProtectData和CryptUnprotectData函数使用当前用户的登录凭据执行加密。
我之前写过这个答案,但后来又重新考虑了一下,因为我以前没有听说过DPAPI。然而,经过进一步的考虑,我想提出以下观点。这里重要的序言是,这一切都取决于你的需要。我想到了两种相互冲突的可能性:
-
你想为你的用户提供完整的保护和加密,用户可以信任只有她才能解密,无论在什么情况下
-
你是一个企业IT经理,对所有员工都有严格的控制。您希望他们将业务数据加密作为其工作流的一部分,以便他们无法看到彼此的数据,但管理员可以愉快地读取每个人的数据。
如果您处于情况(2),那么现在停止阅读并使用DPAPI,它非常适合这种情况。如果你更喜欢场景(1),那么阅读下面我的原始答案。
那可能不是个好主意。原因:
实际的密码不会存储在系统中(除非你有Windows 3.11或类似的东西)。相反,只存储密码的散列,并且在登录时对用户输入的密码进行散列并与存储的散列进行比较。
所以您最多可以从系统中检索存储的散列(如果您有管理员权限)。但是,如果这是您可以使用的唯一数据,那么您制作的任何加密密钥都将从该散列派生,而不是从实际密码派生。因此,任何访问系统的人都可以获得存储的哈希,并从那里相对容易地获得加密密钥。
总之,不要。请用户为您的数据设置一个专用的新密码,并仅用于此。
使用Kerberos(基于linux的身份验证服务器,或其他使用Kerberos的服务器)/LDAP框架(Windows服务器),而不是设计自己的登录算法。
Windows平台SDK &;第三方库有与这些框架的连接器。
MSDN中关于Kerberos的更多信息:http://msdn.microsoft.com/en-us/library/ff649429.aspx
如何安全地存储密码
Win32 bcrypt: http://msdn.microsoft.com/en-us/library/aa375421%28v=vs.85%29.aspx
- 创建加密安全密码.并验证它是否有效
- 使用 C++/Qt(已知密码)打开加密的 PDF
- 简单仿射密码加密解密
- 延迟加载加密++密码.dll
- 使用加密密码连接到MySQL
- 上和小写字符串的加密和解密,基本密码C
- 如何加密文件并隐藏密码
- C++ 中的仿射密码加密
- 如何通过AES-256-CBC使用密码代替密钥和IV加密文件
- 如何在牡丹加密中检查输入的密码是否正确
- 对已编译的可执行文件中的常量字符串(例如密码)进行加密
- 密码无法正确加密(携带太多字符)
- 转录密码加密程序崩溃
- 正在读取加密的用户名/密码
- 学校作业的简单密码加密
- 使用加密哈希密码进行身份验证
- 使用用户密码加密
- 可视化C++代码加密,无需使用密码或密钥
- 基于密码的加密OpenSSL C++
- 加密密码以便存储