Cryptographie
Fermé
Utilisateur anonyme
-
irongege Messages postés 41001 Date d'inscription Statut Modérateur Dernière intervention -
irongege Messages postés 41001 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour
J'ai un projet de cryptographie DES et j'ai ramassée ce bout de code sur internet et je comprends pas ce qu'elle fait et j'aimerai l'utiliser dans mon code et j'ai peur que le prof me demande de lui expliquer.
private static byte[] extractBits(byte[] input, int pos, int n) {
int numOfBytes = (n - 1) / 8 + 1;
byte[] out = new byte[numOfBytes];
for (int i = 0; i < n; i++) {
int val = extractBit(input, pos + i);
setBit(out, i, val);
}
return out;
}
private static byte[] encrypt64Bloc(byte[] bloc,byte[][] subkeys, boolean isDecrypt) {
byte[] tmp = new byte[bloc.length];
byte[] R = new byte[bloc.length / 2];
byte[] L = new byte[bloc.length / 2];
tmp = permutFunc(bloc, IP);
L = extractBits(tmp, 0, IP.length/2);
R = extractBits(tmp, IP.length/2, IP.length/2);
for (int i = 0; i < 16; i++) {
byte[] tmpR = R;
if(isDecrypt)
R = f_func(R, subkeys[15-i]);
else
R = f_func(R,subkeys[i]);
R = xor_func(L, R);
L = tmpR;
}
tmp = concatBits(R, IP.length/2, L, IP.length/2);
tmp = permutFunc(tmp, invIP);
return tmp;
}
J'ai un projet de cryptographie DES et j'ai ramassée ce bout de code sur internet et je comprends pas ce qu'elle fait et j'aimerai l'utiliser dans mon code et j'ai peur que le prof me demande de lui expliquer.
private static byte[] extractBits(byte[] input, int pos, int n) {
int numOfBytes = (n - 1) / 8 + 1;
byte[] out = new byte[numOfBytes];
for (int i = 0; i < n; i++) {
int val = extractBit(input, pos + i);
setBit(out, i, val);
}
return out;
}
private static byte[] encrypt64Bloc(byte[] bloc,byte[][] subkeys, boolean isDecrypt) {
byte[] tmp = new byte[bloc.length];
byte[] R = new byte[bloc.length / 2];
byte[] L = new byte[bloc.length / 2];
tmp = permutFunc(bloc, IP);
L = extractBits(tmp, 0, IP.length/2);
R = extractBits(tmp, IP.length/2, IP.length/2);
for (int i = 0; i < 16; i++) {
byte[] tmpR = R;
if(isDecrypt)
R = f_func(R, subkeys[15-i]);
else
R = f_func(R,subkeys[i]);
R = xor_func(L, R);
L = tmpR;
}
tmp = concatBits(R, IP.length/2, L, IP.length/2);
tmp = permutFunc(tmp, invIP);
return tmp;
}
1 réponse
Bonjour
Selon le théorème de CCM, toute demande d'aide au devoir finit implacablement plongée dans les profondeurs des messages hors sujets.
Sur ce, je vous invite à prendre connaissance de cette information concernant vos demandes de devoirs.
Selon le théorème de CCM, toute demande d'aide au devoir finit implacablement plongée dans les profondeurs des messages hors sujets.
Sur ce, je vous invite à prendre connaissance de cette information concernant vos demandes de devoirs.