Xor
為什麼這段程式碼有效
我在 CryptoHack 上做了一些介紹性的挑戰,其中一個挑戰,更準確地說是最喜歡的字節,與單個字節的 XOR。
我用給定字元串和單鍵進行異或運算完成了我的解決方案,迭代了 256 個整數,直到找到看起來像“標誌”的東西。
然後我尋找送出的解決方案,其中一個解決方案是:
input_str = bytes.fromhex('73626960647f6b206821204f21254f7d694f7624662065622127234f726927756d') key = input_str[0] ^ ord('c') print(''.join(chr(c ^ key) for c in input_str))
給我帶來麻煩的部分是
key
變數的第三行或賦值。為什麼這個鍵有效?換句話說,他是怎麼找到的?我最好的猜測是他做了我之前做的事情(迭代超過 256 個整數),一旦他找到它,他就修改了他的程式碼。任何幫助將不勝感激!
這裡沒有什麼非常困難的事情。
正如該網站所說,它的標誌通常採用crypto{y0ur_f1rst_fl4g}格式。因此,您嘗試檢索的標誌的第一個字元很可能是
c
,這意味著 XOR 密鑰必須是c
與密文的第一個字元 (0x73) 異或的 (0x63) 的 ASCII 值。