0

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

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

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

4

5 回答 5

1

您必须在 JavaScript 中对其进行加密。不幸的是,JavaScript 不提供任何开箱即用的加密工具,因此您必须使用第三方库或自己编写一些东西。

正如其他人所说,HTTPS 旨在加密整个流量,所以也许您不需要任何额外的东西?但是,如果您这样做,您可能想查看这篇文章,它可能会阐明这个问题。祝你好运 !:)

于 2012-03-16T18:09:33.060 回答
1

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

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

在 PyCrypto AES MODE_CTR 中包含 nonce 和块计数

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

于 2012-03-16T18:13:23.460 回答
0

https 一种加密格式。你很厉害。

如果你想在客户端做,我建议用sha1. 这家伙似乎有一些库:http: //pajhome.org.uk/crypt/md5/ - SHA1、sha256、md5 等。

于 2012-03-16T18:12:33.913 回答
0

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

但是,您需要更安全的密码存储机制。使用具有数千次哈希迭代的“bcrypt”之类的算法(bcrypt 将此称为成本因子,它应该至少为 16,意味着 2 16次迭代)和随机的“盐”。这是通过从密码中获取加密密钥来实现的,这是一个计算成本很高的过程,然后使用该密钥来加密一些已知的密文,将其保存起来以供将来登录尝试进行比较。

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

于 2012-03-16T18:16:56.597 回答
0

与之相反httphttps是一种加密协议。您不需要在客户端和服务器之间进行额外的加密。

SHA224SHA1或者MD5不是加密,而是散列函数,这意味着它们是不可逆的。

一些答案建议在客户端散列密码。但是,不可逆转并不意味着不可破解。对普通密码进行哈希处理后,从哈希中获取匹配的密码相对容易(例如,参见Rainbow 表)。

因此,您不应在客户端对密码进行哈希处理,而应将其与在服务器端选择的任意字符串(通常称为salt)连接起来并对结果进行哈希处理。

于 2012-03-16T18:23:46.650 回答