[英]xor function in python
如果有人可以在python中使用XOR功能,我會很高興。
例如,我有兩個相當大的消息(大約300個符號),它們是用十六進制代碼寫的,我如何正確地對它們進行XOR? 我嘗試使用通用函數並將其轉換為其他類型,但我無法做到這一點(
我不知道我需要轉換哪種數據類型?
如果我的問題正確無誤,如果您有2個十六進制數字表示為字符串:
a = "e877a5e68bea88d61b93ac5ee0d562e8e9"
b = "23fe3231699ade23482"
您可以通過將其轉換為int並應用按位xor運算符來使用掩碼對它們中的任何一個進行異或:
xor_result = int(a, 16) ^ int(b, 16)
print '%x' % xor_result
並且,如果您想保留原始格式
string_xor_result = hex(xor_result)[2:]
遍歷字符串chars,然后將每個char轉換為int( int(a,16)
),然后應用xor,用hex
轉換為hex,用[2:]
去除開頭的“ 0x”,最后加入所有內容
stra = 'abc'
strb = 'abd'
''.join(hex( int(a,16) ^ int(b,16) )[2:] for a,b in zip(stra, strb))
請注意,正如注釋中指出的那樣,僅當兩個字符串的長度相同時,它才有效。 否則,較長字符串的一些字符將被忽略。
如果兩個字符串的長度不同,則可以添加一行cycle()
stra = raw_input("msg: ")
strb = raw_input("key: ")
strb = cycle(strb)
print ''.join(hex( int(a,16) ^ int(b,16) )[2:] for a,b in zip(stra, strb))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.