SHA1 PHP加密与SHA1 Python加密
问题描述:
对于我正在处理的项目,我们正试图将旧的PHP/MySQL服务器迁移到新的Django/PostgreSQL服务器。在PHP服务器上,我们目前使用字符串sha1()对密码进行管理,然后将其与数据库进行比较。我知道python has a sha1() function,但我没有足够的了解密码学知道这些函数在实现中是否有所不同,以及PHP版本与Django版本的比较。有人有什么主意吗?SHA1 PHP加密与SHA1 Python加密
非常感谢!
答
PHP和Python的SHA1实现应该肯定会给出相同的结果。
见自己:
$ python
>>> import hashlib
>>> hashlib.sha1("The quick brown fox jumps over the lazy dog").hexdigest()
'2fd4e1c67a2d28fced849ee1bb76e7391b93eb12'
>>> exit()
$ php -a
php > echo SHA1("The quick brown fox jumps over the lazy dog");
2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
+0
非常感谢!我很欣赏测试。我本应该这样做。 – AdamG
答
sha1
在PHP接受一个可选的第二个参数($ raw_output;默认值 假)。在Python中,有两种独立的方法来处理这个问题:hexdigest
和digest
。
案例1
对于$raw_output
设置为false
我们使用hexdigest
。
在PHP:
sha1("My string");
在Python:
from hashlib import sha1
sha1("My string").hexdigest()
案例2
对于$raw_output
设置为true
我们使用digest()
在PHP:
sha1("My string", true);
在Python:
sha1("My string").digest()
顺便说一句,你可能[不想使用SHA1哈希在所有密码](http://en.wikipedia.org/wiki/Password_cracking #预防)。 –
是的,我意识到,现在我已经做了更多的研究......但是,当你已经有用户时,从sha1转换到其他哈希系统似乎是一个额外的问题。 – AdamG