¿Cómo XOR dos cadenas que contienen números hexadecimales en python?

He buscado una respuesta en línea, pero ninguno de ellos parece resolver mi problema a mi manera (lo sé, soy exigente: D).

Este es el trato: estoy usando el tipo de cadena para almacenar dos números hexadecimales, porque el tipo de entero predeterminado en Python no es lo suficientemente largo para mis propósitos. Por ejemplo como este:

S1 = "315c4eeaa8b5f8aaf9174145bf43e1784b8fa00dc71d885a804e5ee9fa40b16349c146fb778cdf2d3aff021dfff5b403b510d0d0455468aeb98622b137dae857553ccd8883a7bc37520e06e515d22c954eba5025b8cc57ee59418ce7dc6bc41556bdb36bbca3e8774301fbcaa3b83b220809560987815f65286764703de0f3d524400a19b159610b11ef3e" S2 = "234c02ecbbfbafa3ed18510abd11fa724fcda2018a1a8342cf064bbde548b12b07df44ba7191d9606ef4081ffde5ad46a5069d9f7f543bedb9c861bf29c7e205132eda9382b0bc2c5c4b45f919cf3a9f1cb74151f6d551f4480c82b2cb24cc5b028aa76eb7b4ab24171ab3cdadb8356f" 

El punto es que se supone que estos son NÚMEROS, pero se almacenan en una cadena. Lo que quiero hacer es tratar estas dos cadenas como números, realizar un XOR a nivel de bits en las dos y luego obtener una salida en una forma similar: un número hexadecimal almacenado en una cadena.

Soy bastante nuevo en progtwigción e incluso más nuevo en Python, así que no pude encontrar una manera de hacer esto. No solo estoy buscando un guión, también me gustaría entender cómo funciona, así que, por favor, sea minucioso con su explicación, ya que soy bastante noob: D.

Python puede mantener tus valores como números.

Vea esto para la prueba,

 >>> hex(int(S1, 16))[2:-1] == S1 True 

Simplemente estoy ajustando la cadena, eliminando '0x' desde el principio y L desde el final.

Para su respuesta, todo lo que necesita hacer es

 hex(int(S1, 16) ^ int(S2, 16)) 
  1. Invierta ambas cadenas a s1_r y s2_r
  2. Hacer un char por char xor (char1 (desde s1_r) xor char2 (desde s2_r))
  3. Añadir resultado a xor_str
  4. Inverso xor_str

Para realizar la operación XOR asumiendo que son enteros largos, puede usar el tipo long en Python:

 # Convert the hex string S1 and S2 to longs l1=long(S1,16) l2=long(S2,16) result=hex(l1 ^ l2) # Convert the XOR of the strings # Output will be: # '0x1013abb8b0ead34450ee04e8d507fa16552e5aa9f2cc9551acc9d71b646f8a9b4f3548f2068172b201bf0daf75bdddd0dedd861b9ccbcf7c9ce53e39ecafa9c86880fba0c600778fc7bc6e3bd60c8b0df469f5a7f1da4339f9202bdb43b97b22db69642ce5402b8ce44f86d990dbf5a2L'