Pas premier - Obtenir nouveau byte de clé pour le cycle suivant
Exécuter les opérations suivantes:
k(i, = k(i, XOR T1[k(i+1, XOR k(i-1, XOR C]
k(i+1, = k(i+1, XOR T1[K(i+2, XOR k(i, XOR C]
k(i+2, = k(i+2, XOR T1[k(i+3, XOR k(i+1, XOR C]
k(i+3, = k(i+3, XOR T1[k(i+4, XOR k(i+2, XOR C]
où les = 1 pour les cycles 1, 5, 9, 13
5 pour les cycles 2, 6, 10, 14
9 pour les cycles 3, 7, 11, 15
13 pour les cycles 4, 8, 12, 16.
Dans les cas dans lequel la formule susdite donne suffixes dehors k de l'entracte 1-16, on doit considérer la valeur obtenue par k en faisant le formulaire 16. Es. Si k = 17, alors k = k mod 16 = 1, si k=16, alors k = k mod 16 = 0.
La valeur du constant C dépend du numéro de cycle. Pour les cycles 1, 2,…, 15, 16 telle constante a valeurs mêmes respectivement au 0x00, 0x01,…, 0x0E, 0x0F.
Cela annule (unwinding) l'effet de la manipulation du circulaire clé dans l'algorithme de decriptaggio.
Second pas - XOR du byte de clé avec ceux de données
Celui-ci est simple:
d5 = K(i, XOR d5
d6 = K(i+1, XOR d6
d7 = K(i+2, XOR d7
d8 = K(i+3, XOR d8
où les = 1 pour les cycles 1, 5, 9, 13
5 pour les cycles 2, 6, 10, 14
9 pour les cycles 3, 7, 11, 15
13 pour les cycles 4, 8, 12, 16.
L'inversion des suffixes annule (unwinds) l'interaction du byte de clé avec ceux de données comparée dans l'algorithme de decriptaggio.
Troisième pas - Fonction Noyau
Avant exécuter 4 accès au Tableau 1:
d5 = T1[d5], d6 = T1[d6], d7 = T1[d7], d8 = T1[d8]
Successivement utiliser le Tableau 2, tu vois au-delà. Le terme '~ il signifie qu'échange de place du demi byte moins significatif avec ce plusieurs significatif, es. 11100010 = E2 Þ ~ E2 = 2E = 00101110,:
d5 = d8 XOR d5
d7 = T2[(~d8, + d7]
d8 = d7 XOR d8
d6 = T2 [(~ d7, + d6]
d7 = d6 XOR d7
d5 = T2 [(~ d6, + d5]
Maintenant on doit utiliser le Tableau 1 de la façon suivante:
d6 = d5 XOR d6
d8 = T1[(~d5, + d8]
d5 = d8 XOR d5
d7 = T1[(~d8, + d7]
d8 = d7 XOR d8
d6 = T1[(~d7, + d6]
Finalement exécuter:
d7 = d6 XOR d7
d6 = d5 XOR d6.
Si en quelque addition la valeur résultante est grande de 0xFF, soustraire la valeur 0x0100 avant d'accéder aux tableaux.
Ce pas est identique à l'all relatif Fonction Noyau de decriptaggio, mais clairement oeuvre en direction opposée.
Quatrième pas - Calculer les nouvelles valeurs du byte de données pour le prosimo cycle
Ceux-ci les obtiennent du Tableau 2 en procédant de la façon suivante:
d1 = T2[d6] XOR d1
d2 = T2[d8] XOR d2
d3 = T2[d5] XOR d3
d4 = T2[d7] XOR d4
Avant d'utiliser le byte de données d1,…, d8 faut les échanger de la façon suivante:
d1 D d5
d2 D d6
d3 D d7
d4 D d8
CARACTÉRISTIQUE: à la fin du 16° cycle cependant cet échange ne doit pas être fait et le byte d1,…, d8 représentent le marquage complet qui devrait coïncider au 8 byte que suivants au modèle 0x82.
Je suis conscient qu'un coup d'oeil au questomateriale tout est assez décourageant, mais si vous étudiez le matériel à travers un exemple, vous trouverez le courage d'aller devant.
Pour récapituler, nous pouvons dire que le mot de contrôle est le Decriptaggio Mediaguard, le message de marquage est le Criptaggio Mediaguard vice versa.
Les clés sont mémorisées pour l'usage direct avec le criptaggio Mediaguard et à chaque cycle elle est engendrée un circulaire clé pour ce cycle.
Nous pouvons dire ensuite que l'algorithme de Criptaggio opère sur les clés circulaires R1, R2,…, R16.
L'algorithme de decryptaggio est le contraire de ce de Criptaggio; le but de la phase de préparation de la clé est ce d'engendrer R16. À chaque cycle de Decriptaggio elle est engendrée la clé circulaire pour le cycle suivant.
Les circulaire clé pour le decriptaggio sont R16, R15,…, R1. La procédure entière assure que le Decryptaggio est le procédé inverse du Criptaggio exactement.
Pour gravé, si quelqu'un reconnaît l'algorithme et son nom, il aura la gentillesse peut-être de me le faire savoir.