将 PHP 转换为 Python

Mar*_*ark -1 python hash sha1

我需要帮助将以下 PHP 转换为 python

$plaintext = "MyPassword";
$utf_text = mb_convert_encoding( $plaintext, 'UTF-16LE' );
$sha1_text = sha1( $utf_text, true );
$base64_text = base64_encode( $sha1_text );
echo $base64_text; //ouput = QEy4TXy9dNgleLq+IEcjsQDYm0A=
Run Code Online (Sandbox Code Playgroud)
  1. 将字符串转换为 UTF16LE
  2. 使用 SHA1 对 1. 的输出进行哈希处理
  3. 使用base64编码对2.的输出进行编码。

我正在尝试 hashlib.sha1 但它不起作用。也许是因为这个,也许是编码。任何人都可以帮忙吗

Mar*_*ers 5

您的 PHP 代码将密码编码为 UTF16、小端;如果你的密码值是 unicode 值,那么在 Python 中就可以正常工作:

>>> import hashlib
>>> plaintext = u"MyPassword"
>>> utf_text = plaintext.encode('UTF-16LE')
>>> hashlib.sha1(utf_text).digest().encode('base64')
'QEy4TXy9dNgleLq+IEcjsQDYm0A=\n'
Run Code Online (Sandbox Code Playgroud)

上述会话是在 Python 2 中完成的;在 Python 3 中,u可以省略前缀,因为所有字符串值都是 Unicode。