Python中的密码加密?

0 投票
5 回答
2750 浏览
提问于 2025-04-17 15:28

我刚刚用Python创建了一个新的注册应用程序。所有的用户信息都成功保存到数据库里,但密码却是以我们注册时填写的原样保存的。请问我该如何加密密码,或者使用Python的默认功能来处理密码呢?

请给我一些建议好吗?

5 个回答

1

自己实现这些东西可不行,否则很可能会出错。

在存储密码时,使用一些可以反向解码的方式、对称加密、或者简单的哈希(比如hashlib里的)甚至是随机加盐的哈希,都是现在的大失败。

如果你在用django,最好使用django提供的一些强大的算法(通常是:bcrypt、pbkdf2、sha512_crypt)。

如果不使用django,那就用passlib - 不过要先看看它的文档。

http://code.google.com/p/passlib/

1

你应该对密码进行加密,下面的代码会根据你在settings.py文件中设置的PASSWORD_HASHERS来加密用户输入的原始密码。

from django.contrib.auth.hashers import make_password
pass = make_password(raw_pass) # hashing is done here
user.set_password(pass)
2

为了让离线破解密码变得更加困难,你可以使用 bcrypt 这个工具。

如果你只能使用标准库的话,可以在Unix系统上使用 crypt 模块

hashed = crypt.crypt(plaintext)

撰写回答