对于我目前正在进行的一个项目,我们正在尝试将旧的 PHP/MySQL 服务器迁移到新的 Django/PostgreSQL 服务器。在 PHP 服务器上,我们目前通过获取一个字符串、对其进行 sha1() 处理,然后将其与数据库进行比较来管理密码。我知道python 有一个 sha1() 函数,但我对密码学的了解还不够,无法知道这些函数在实现上是否有所不同,以及 PHP 版本与 Django 版本相比如何。有谁有想法吗?
非常感谢!
对于我目前正在进行的一个项目,我们正在尝试将旧的 PHP/MySQL 服务器迁移到新的 Django/PostgreSQL 服务器。在 PHP 服务器上,我们目前通过获取一个字符串、对其进行 sha1() 处理,然后将其与数据库进行比较来管理密码。我知道python 有一个 sha1() 函数,但我对密码学的了解还不够,无法知道这些函数在实现上是否有所不同,以及 PHP 版本与 Django 版本相比如何。有谁有想法吗?
非常感谢!
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
sha1
在 PHP 中接受可选的第二个参数($raw_output;默认值为 false)。在 Python 中有两种单独的方法来处理它:hexdigest
和digest
.
对于$raw_output
设置false
我们使用hexdigest
.
在 PHP 中:
sha1("My string");
在 Python 中:
from hashlib import sha1
sha1("My string").hexdigest()
对于$raw_output
设置true
我们使用digest()
在 PHP 中:
sha1("My string", true);
在 Python 中:
sha1("My string").digest()