0

对于我目前正在进行的一个项目,我们正在尝试将旧的 PHP/MySQL 服务器迁移到新的 Django/PostgreSQL 服务器。在 PHP 服务器上,我们目前通过获取一个字符串、对其进行 sha1() 处理,然后将其与数据库进行比较来管理密码。我知道python 有一个 sha1() 函数,但我对密码学的了解还不够,无法知道这些函数在实现上是否有所不同,以及 PHP 版本与 Django 版本相比如何。有谁有想法吗?

非常感谢!

4

2 回答 2

3

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
于 2013-08-20T08:46:04.353 回答
1

sha1在 PHP 中接受可选的第二个参数($raw_output;默认值为 false)。在 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()
于 2015-08-25T07:07:39.213 回答