Frage

I'm new to Python, but have a decent amount of programming experience (although I don't really know how I would do this in another language either).

I have a long-ish encrypted hex string, and what I would like to do is xor that string with the at every position such that I am xor-ing an equal length string from the encrypted string at every point.

For example, if I had the string 12104c06134e5709 and the as 74484520 I would like to do:

  • 12104c06 xor 74484520
  • 2104c061 xor 74484520
  • 104c0613 xor 74484520

(etc...)

I'm not overly concerned how the result is stored at this point, I suppose an array would be fine (a list in Python, I think).

Is this possible? Thanks for all help.

War es hilfreich?

Lösung

def iterXOR(hexString, otherString):

    #Convert otherString to a hex (the 16 is for base 16)
    otherNum = int(otherString, 16)

    #Iterate over the hexString
    for i in range(0, len(hexString) - len(otherString) + 1):

        #Grab the substring of length N beginning at index i
        #Where N is the length of otherString and i is the index
        subString = hexString[i:i+len(otherString)]

        #Convert the substring to a hex number
        hexNum = int(subString, 16)

        #Print the product of the XOR (or do whatever you want here)
        print hex(hexNum ^ otherNum)


#Usage
iterXOR("12104c06134e5709", "74484520")

Outputs:

>>> 
0x66580926
0x554c8541
0x64044333
0x70882414
0x384e566e
0xb42971c5
0x725b0b77
0x157ca050
0x67061229
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top