Разделите зашифрованную строку и зафиксируйте ее с более короткой строкой в ​​каждой точке

Я новичок в Python, но у меня достаточно опыта в программировании (хотя я и не знаю, как бы я это делал на другом языке).

У меня есть зашифрованная шестнадцатеричная строка с длинным номером, и я хотел бы сделать это с помощью the в каждой позиции, так что я хорюю строку одинаковой длины из зашифрованной строки в каждой точке.

Например, если бы у меня была строка 12104c06134e5709 а также the как 74484520 Я хотел бы сделать:

  • 12104c06 исключающее 74484520
  • 2104c061 исключающее 74484520
  • 104c0613 исключающее 74484520

(так далее...)

Я не слишком обеспокоен тем, как результат сохраняется в этот момент, я думаю, что массив будет в порядке (список в Python, я думаю).

Это возможно? Спасибо за помощь.

1 ответ

Решение
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")

Выходы:

>>> 
0x66580926
0x554c8541
0x64044333
0x70882414
0x384e566e
0xb42971c5
0x725b0b77
0x157ca050
0x67061229
Другие вопросы по тегам