如何加密发送到服务器的密码

时间:2012-03-16 18:05:46

标签: python encryption passwords hashlib

我正在尝试将网络表单中的用户名和密码数据发送到我的服务器。

密码通过https连接以纯文本形式发送,然后在存储之前在服务器上正确加密(使用python hashlib.sha224),但是我不确定如何将密码文本传输到服务器加密格式。

我的Web客户端是用javascript编写的,服务器是用python编写的。

5 个答案:

答案 0 :(得分:1)

您必须在JavaScript中对其进行加密。遗憾的是,JavaScript并未提供任何开箱即用的加密工具,因此您必须使用第三方库或自行编写内容。

正如其他人所说,HTTPS是为了加密整个流量,所以也许你不需要额外的东西?但是,如果你这样做,你可能想看看这个Article,这可能会解释这个问题。祝好运 ! :)

答案 1 :(得分:1)

实际上,您传输的密码是加密的,因为您使用的是SSL。 此外,您不加密密码,您哈希服务器上的密码。

无论如何,您可以使用类似jCryption的内容。 crypt-js也可以满足您的目的 对于python,有一个名为PyCrypto的加密库。但是我对Javascript和Python之间的通信有一个问题。我尝试做类似的事情,但有问题。我想我的问题可以帮助你。

Include nonce and block count in PyCrypto AES MODE_CTR

但总的来说,您已经通过使用https来解决问题。

答案 2 :(得分:0)

https 加密格式。你很好。

如果您想在客户端进行操作,我建议使用sha1对其进行哈希处理。这家伙似乎有一些库:http://pajhome.org.uk/crypt/md5/ - SHA1,sha256,md5等。

答案 3 :(得分:0)

将密码发送到服务器的HTTPS通道提供足够好的加密。

但是,您需要一种更安全的密码存储机制。使用" bcrypt"等算法有数千个哈希迭代(bcrypt称之为成本因子,它应该至少为16,意味着2 16 迭代),以及随机的"盐"。这是通过从密码中导出加密密钥来实现的,这是一个计算成本很高的过程,然后使用该密钥加密一些已知的密文,这些密文将在以后的登录尝试中保存用于比较。

此外,仅在登录时使用HTTPS是不够的。您应该将它用于任何需要经过身份验证的用户或带有身份验证cookie的请求。

答案 4 :(得分:0)

http相反,https是加密协议。您不需要在客户端和服务器之间进行额外的加密。

SHA224SHA1MD5不是加密,而是hashing function,这意味着它们是不可逆转的。

有些答案建议客户端使用哈希密码。 但是,不可逆转并不意味着无法破解。使用普通密码进行哈希处理后,从哈希中获取匹配密码相对容易(例如,请参阅Rainbow tables)。

因此您不应该在客户端散列密码,而是将其与服务器端选择的一些任意字符串(通常称为 salt )和哈希相连接结果。