SHA1 PHP加密与SHA1 Python加密

问题描述:

对于我正在处理的项目,我们正试图将旧的PHP/MySQL服务器迁移到新的Django/PostgreSQL服务器。在PHP服务器上,我们目前使用字符串sha1()对密码进行管理,然后将其与数据库进行比较。我知道python has a sha1() function,但我没有足够的了解密码学知道这些函数在实现中是否有所不同,以及PHP版本与Django版本的比较。有人有什么主意吗?SHA1 PHP加密与SHA1 Python加密

非常感谢!

+0

顺便说一句,你可能[不想使用SHA1哈希在所有密码](http://en.wikipedia.org/wiki/Password_cracking #预防)。 –

+0

是的,我意识到,现在我已经做了更多的研究......但是,当你已经有用户时,从sha1转换到其他哈希系统似乎是一个额外的问题。 – AdamG

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中,有两种独立的方法来处理这个问题:hexdigestdigest

案例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()