2010-05-28 5 views
-1

On suppose:après découverte de l'opération XOR C (et XOR réversibilité)

unsigned char A = 10; 
unsigned char B = 11; 
unsigned char C = 12; 


unsigned char Diff1 = A^B; 
unsigned char Diff2 = B^C; 

//find any of A or B or C using Diff1 and Diff2 

La question est: Il y avait 3 valeurs initialement pour lesquelles nous avons trouvé 2 différences. Existe-t-il un moyen de trouver A, B ou C en utilisant 2 différences Diff1 et Diff2?

Je sais que XOR n'est pas réversible sauf si vous connaissez la clé, mais en gardant à l'esprit que __int8 non signé vaut 0 ... 255 au maximum 256 valeurs différentes.

restez bien.

+4

On ne sait pas ce qui est demandé ici - vous pouvez essayer reformuler votre question? – fbrereto

Répondre

7

Vous n'avez pas suffisamment d'informations pour trouver l'un de A, B ou C simplement en connaissant les valeurs Diff1 et Diff2.

Il y a 256 ** 3 entrées possibles et seulement 256 ** 2 sorties possibles, donc pour chaque sortie il y a 256 entrées possibles différentes qui auraient pu donner cette sortie - où A, B et C pourraient avoir n'importe quelle valeur. Mais une fois que vous en connaissez un, vous pouvez calculer les deux autres. En pratique, vous utilisez deux fois le cryptage XOR sur un texte en clair (B) avec deux clés inconnues distinctes (A et C). Un chiffrement XOR est invariablement impossible à inverser - il n'y a aucune information utile dans la sortie (en supposant que la clé est choisie uniformément au hasard et jamais réutilisée).

Vous pouvez trouver A XOR C si:

Diff1^Diff2 
+0

qu'en est-il de connaître le premier et le dernier et de xorer les valeurs de taille moyenne à inférieure: unsigned char A = 10; char non signé B = 11; char non signé C = 12; char non signé D = 13; char non signé E = 11; non signé char X = A^B; char non signé X = X^C; non signé char X = X^D; char non signé X = X^E; Supposons que l'on connaisse A, E et X. Pouvons-nous trouver les valeurs de B ou C ou D? merci. –

+0

Une chance de réponse? –

+0

sachant A, E, et X vous pouvez trouver Y qui est égal à (B^C^D), mais pas ce que B, C ou D est sans plus d'informations. – MerickOWA

Questions connexes