Я ищу способ выполнять побитовые операции (для криптографии, в основном xor) с шестнадцатеричными строками, которые могут быть длиннее, чем я хотел бы поместить в Long. В качестве примера у меня мог бы быть длинный шестнадцатеричный литерал, который я хочу искоренить с другими данными. Ниже приведен пример того, что я хочу сделать и как я это делаю сейчас, но я считаю, что в какой-то момент компьютер достигнет своего предела в том, что он может поместить в Long, так как я могу сделать это более надежно?
#assuming lengths of messages are correct and key length as well
old_hex = "top secret ascii message".encode('hex')
encoded = "09e1c5f70a65ac56e55ac519458e7e53f36" #a literal hex encoded string
key_hex = int(old_hex,16) ^ int(encoded,16) #this currently works because this fits in Long
new_hex = "my new message to send 2".encode('hex')
ans_hex = key_hex ^ int(new_hex,16)
print 'old message in hex: 0x'+old_hex
print 'found a key in hex: '+str(hex(key_hex))
print 'new message in hex: 0x'+new_hex
print 'new message encode: '+str(hex(ans_hex))
Итак, я хочу выполнить XOR для более длинных строк, которые здесь, и я боюсь, что они не поместятся в переменной Long, так как я могу обойти это? Должен ли я разбивать строку на более мелкие куски и выполнять каждую часть операции?
2 ** 4096
вписывается в int - person calccrypto   schedule 01.07.2012