Comment XOR de deux hex de chaînes, de sorte que chaque octet est XORed séparément?

J'ai été l'affichage des questions similaires ici pour un couple de jours maintenant, mais il me semble que je ne demande pas la bonne chose, donc excusez-moi si j'ai épuisé mon XOR questions :D.

Au point - j'ai deux hex cordes et je veux XOR ces chaînes de telle sorte que chaque octet est XORed séparément (c'est à dire chaque paire de nombres est XORed séparément). Et je veux le faire en python, et je veux être en mesure d'avoir des chaînes de longueurs différentes. Je vais faire un exemple manuellement pour illustrer mon point de vue (j'ai utilisé le code de l'environnement, car il me permet de me mettre dans des espaces où je veux qu'ils soient):

Input:
s1 = "48656c6c6f"
s2 = "61736b"

Encoding in binary:
48 65 6c 6c 6f = 01001000 01100101 01101100 01101100 01101111
61 73 6b       = 01100001 01110011 01101011

XORing the strings:
01001000 01100101 01101100 01101100 01101111
                  01100001 01110011 01101011
                  00001101 00011111 00000100

Converting the result to hex:
00001101 00011111 00000100 = 0d 1f 04

Output:
0d1f04

Donc, pour résumer, je veux être en mesure à l'entrée deux hex de chaînes de caractères (en général, ces lettres ASCII codé en hexadécimal) de différentes ou de même longueur, et d'obtenir leurs XOR à ce que chaque octet est XORed séparément.

Pourquoi ne pas le cycle de la s2 clé et de l'appliquer à tous caractères de s1? Pourquoi s'appliquent uniquement à la dernière 3?

OriginalL'auteur Norsul Ronsul | 2013-07-01