我一直在寻找一种在if语句中使用密码的方法.显然,if theRawInput == theCorrectPassword:是非常不安全的.有任何想法吗?我已经看到了关于这个主题的其他问题,但他们都建议使用base64,这也是非常不安全的(我在不使用密码的情况下破解了自己编译的脚本的密码).
如果攻击者可以访问您的密码数据库,则仍然隐藏密码的唯一方法是对其进行哈希处理.包含一个salt以防止攻击者依赖通用哈希表:
import hashlib
salt = 'uphi8eiV'
hash = 'a7a2a98cc06f5b2935db5d2866670cc8b48116022e5bc30095b6167ddc2f3f96'
if hashlib.md5.hexdigest(salt + rawInput).hexdigest() == hash:
print('Correct password')
Run Code Online (Sandbox Code Playgroud)
请注意,这对于选择不当的密码仍无济于事.对于这些,请确保攻击者无权访问密码数据库.如果您希望潜在的攻击者能够运行您的程序,但不能访问您的程序操作的某些数据,则必须将该数据移动到远程且安全的服务器程序,该程序本身执行身份验证.