Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用我自己的GenAlt()-足够安全吗?_Python_Security_Bcrypt - Fatal编程技术网

Python 使用我自己的GenAlt()-足够安全吗?

Python 使用我自己的GenAlt()-足够安全吗?,python,security,bcrypt,Python,Security,Bcrypt,由于bcrypt的机理是: >>> myhash = bcrypt.hashpw('testpassword', bcrypt.gensalt(12)) >>> myhash '$2a$12$K1hnCm5z74QtXaynv4.S8.i1FK9xjRr7JSPCRCyB9zpv8xZznZGFi' >>> bcrypt.hashpw('testpassword', myhash) '$2a$12$K1hnCm5z74QtXaynv4

由于bcrypt的机理是:

>>> myhash = bcrypt.hashpw('testpassword', bcrypt.gensalt(12))
>>> myhash    
'$2a$12$K1hnCm5z74QtXaynv4.S8.i1FK9xjRr7JSPCRCyB9zpv8xZznZGFi'
>>> bcrypt.hashpw('testpassword', myhash)
'$2a$12$K1hnCm5z74QtXaynv4.S8.i1FK9xjRr7JSPCRCyB9zpv8xZznZGFi'
我想用它来验证。问题是,我想从客户端制作,所以我需要客户端中的salt部分

我想,如果我使用我自己的
gensalt(username)
——这会从用户名生成salt——那么客户端总是使用相同的salt,与其他用户不同,这可能会很好

这是对bcrypt和我的项目的一个很好的近似,还是我破坏了bcrypt机制的安全性?


我认为如果有人想要解密密码,就不可能使用rainbow表,因为他必须为每个用户使用一个。我在安全问题上经验不足,不知道这是否好。也许hashpw的速度足够快,可以在电脑上使用暴力。

简短的回答是:,你所描述的根本不安全

首先,bcrypt不是一个加密函数,它的结果不能被“解密”。bcrypt是一个使用blowfish构建的消息摘要函数。消息摘要函数产生的哈希被破解

对于客户端来说,使用消息摘要函数进行身份验证是非常有问题的。微软的NTLM使用一个消息摘要功能进行身份验证,这一功能已经被广泛使用。我认为这种认证方法是有缺陷的,应该避免

之所以使用消息摘要函数,是因为它可以作为安全层的深度防御措施。如果攻击者能够发现sql注入漏洞,您希望迫使他们在登录之前花费资源来破坏哈希。如果我能从数据库中取出散列并使用它登录,那么你的系统就一文不值了当客户端使用哈希进行身份验证时,重播攻击是一个巨大的问题。如果我能嗅探网络并重播登录序列,那么这个系统就一文不值了


生成一个随机盐,
bcrypt.gensalt(12)
可能没问题。将散列和盐存储在数据库中。您必须使用安全传输层进行身份验证。请务必阅读。

我正在考虑像协议一样使用wss(安全WebSocket),以便发送所有数据)。您认为这样安全吗?@A.Quiroga使用SSL/TLS并在plantext中发送密码。计算并比较服务器上的哈希值。每个应用程序都这样做,这是正确的做法。