我正在开发一个需要用户登录才能使用该应用程序的 Qt 应用程序。我想使用两因素身份验证,密码和 USB 记忆棒是两种身份验证形式。
是否有任何支持加密的 Qt 库,以及最安全的散列/加密和存储密码和私钥/公钥的方式是什么?
Qt 通过QCryptographicHash类提供内置的加密哈希。它至少支持 MD5、SHA-1 和 SHA-512。MD5 很糟糕,SHA-1 很旧。我想说使用 SHA-256 或 SHA-512 ......两者都很难用当前的技术进行暴力破解。
无论您将密码存储在何处,都需要使用(冗长的)盐来保存它。任何随机字符串都可以。
进行双重身份验证的一种可能方法是将盐存储在 USB 记忆棒上,这样您的程序不知道如何解密密码,除非盐文件存在。这或多或少是 pam_usb 在 Linux 中所做的。(pam_usb使用一次性pad,可以看源码。)