我正在编写一个Python脚本,从一个与ASP.NET的MembershipProvider。使用Python,有没有一种方法可以将十六进制字符串转换回二进制,然后进行base64编码,以某种方式将原始字符串视为Unicode。让我们试试代码。我希望重新编码一个哈希密码,这样哈希值在Python和ASP.NET/C#公司名称:
import base64
import sha
import binascii
def EncodePassword(password):
# strings are currently stored as hex
hex_hashed_password = sha.sha(password).hexdigest()
# attempt to convert hex to base64
bin_hashed_password = binascii.unhexlify(hex_hashed_password)
return base64.standard_b64encode(bin_hashed_password)
print EncodePassword("password")
# W6ph5Mm5Pz8GgiULbPgzG37mj9g=
在ASP.NETMembershipProvider使用此方法进行编码:
^{pr2}$这不匹配。但是,当我用ASCII编码的密码运行它时,它是匹配的,所以.NET方法的Unicode部分就是区别所在。在
W6ph5Mm5Pz8GgiULbPgzG37mj9g=
python脚本中是否有一种方法可以获得与默认.NET版本匹配的输出?在
这就是诀窍:
“Unicode”编码使微软的UTF-16LE(特别是,没有任何BOM)混淆。在散列之前将字符串编码为该字符串,您将得到正确的答案:
相关问题 更多 >
编程相关推荐