我正在使用Django來創建一個電子商店。我正在嘗試使用http://liqpay.com/添加在線支付。他們在PHP中有示例:https://liqpay.com/?do=pages&p=cnb12。Python的sha1原始輸出的模擬
在這個示例中,他們使用PHP的shal($data, 1)
標誌1(然後sha1摘要以原始二進制格式返回,長度爲20)。
但是Python函數hashlib.sha1()
沒有這個標誌。
在Python中是否有一些模擬?
我正在使用Django來創建一個電子商店。我正在嘗試使用http://liqpay.com/添加在線支付。他們在PHP中有示例:https://liqpay.com/?do=pages&p=cnb12。Python的sha1原始輸出的模擬
在這個示例中,他們使用PHP的shal($data, 1)
標誌1(然後sha1摘要以原始二進制格式返回,長度爲20)。
但是Python函數hashlib.sha1()
沒有這個標誌。
在Python中是否有一些模擬?
根據所用的方法,Python hashlib對象可以爲您提供原始字節或十六進制摘要。調用.digest()
爲您提供了原始字節:
>>> import hashlib
>>> data = 'foobar'
>>> hashlib.sha1(data).digest()
'\x88C\xd7\xf9$\x16!\x1d\xe9\xeb\xb9c\xffL\xe2\x81%\x93(x'
>>> len(hashlib.sha1(data).digest())
20
如果你想要得到的十六進制消化,使用.hexdigest()
method代替:
>>> hashlib.sha1(data).hexdigest()
'8843d7f92416211de9ebb963ff4ce28125932878'
謝謝你的男人。這是我需要/ – user854029
在PHP
$hash = hash("sha1", "something", true)
echo base64_encode($hash)
'GVF + c3IdvgxAARuC7Uuxp9vjzik ='
在蟒
from hashlib import sha1
sha1("something").digest().encode("base64")
'GVF + c3IdvgxAARuC7Uuxp9vjzik = \ N'
說明
在php中,散列函數第三個參數意味着輸出將以二進制模式在python中做相同的事情,您必須使用方法摘要來獲得相同的結果。
您是否試圖查找該標誌實際上做了什麼?有機會,你可以通過在python中傳遞適當的函數來在PHP觸發器中應用任何轉換標誌。 – GordonM