2012-03-16 50 views
0

我试图从web表单发送用户名和密码数据到我的服务器。如何加密发送到服务器的密码

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

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

+3

https是加密;你究竟是想要避免读取数据? – mfrankli 2012-03-16 18:08:31

+0

如果它是一个https连接,那么问题是什么? – 2012-03-16 18:09:08

+0

此外,哈希!=加密。 'SHA *'不是加密算法。 – delnan 2012-03-16 18:16:30

回答

1

你必须在JavaScript中加密它。不幸的是,JavaScript不提供任何开箱即用的加密工具,因此您必须使用第三方库或自行编写一些内容。

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

0

https加密格式。你很好。

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

1

其实你传输密码加密,因为你使用SSL。 此外您还没有加密的密码,您散列服务器上的密码。

无论如何,你可以使用像jCryption这样的东西。 crypt-js也可以适合你的目的。
对于python,有一个叫做PyCrypto的加密库。但是,我与Javascript和Python之间的通信存在一个问题。我尝试做类似的事情,但是遇到问题。我想我的问题会帮助你。

Include nonce and block count in PyCrypto AES MODE_CTR

但在一般情况下,你已经解决你自己的问题,通过使用HTTPS。

0

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

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

另外,仅在登录时使用HTTPS是不够的。您应该将其用于任何需要通过身份验证的用户或携带身份验证Cookie的请求。

0

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

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

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

因此你不应该哈希在客户端的密码,但在服务器端选择了一些任意字符串拼接它(通常被称为)和散列结果。

相关问题