提问人:Dihmz 提问时间:5/23/2023 最后编辑:Dihmz 更新时间:5/23/2023 访问量:66
我正在尝试比较两个字符串,但只有当我在 python3 中对它们运行 repr 时,它们才会有所不同
I am trying to compare two strings but they are only different when I run repr on them in python3
问:
我在 python 中有两个字符串存储在变量 a 和 b 中。 a 是传递给脚本的参数,b 是解码 win32crypt 结果的结果。我终于使用 repr 来比较它们,毫不奇怪,参数返回为“windows”一词,但 b 返回为“w\x00i\x00n\x00d\x00o\x00w\x00s\x00”。我知道我可能可以编写一些代码来摆脱 \x00,并且我在网上发现这是某种本质上为字符添加重音的方法,但想知道是否有更好的方法将 b 转换为纯文本或将 a 转换为与 b 相同的格式。下面是没有导入的代码的基本表示形式。
def decrypt(password):
_, decrypted_password_string = win32crypt.CryptUnprotectData(binascii.unhexlify(password), None, None, None, 0)
#print(decrypted_password_string.decode())
return decrypted_password_string.decode()
main(a):
b = encryptedstringfromcsv
b=decrypt(b)
if a == b:
print('true')
else:
print('false')
总是打印 false,我假设由于 repr 值。我希望它打印为 true
答:
0赞
Dihmz
5/23/2023
#1
@JonSG上面指定我可以解码 utf-16。将其添加到我的解密函数的解码部分修复了它。非常感谢:)
评论
0赞
Dihmz
5/24/2023
我两天都不能接受自己的答案。如果其他人的回答基本上相同,我会接受它作为答案。否则,我会在两天后接受我的答案。
0赞
theRockers
5/23/2023
#2
看起来 main() 中的解密值实际上并没有保存在任何地方。尝试更改
decrypt(b)
自
b = decrypt(b)
评论
0赞
Dihmz
5/23/2023
嘿,摇滚乐手。我忘了在这里的简化代码中添加 b=,但对其进行了编辑。我回答了最终修复它的原因,但我无法接受 2 天。不过,对于响应
评论
b'w\x00i\x00n\x00d\x00o\x00w\x00s\x00'.decode("utf-16")
--->“窗口”decrypt