From 7d91d4bc01b9c13cc70a9ced3161b69667d96728 Mon Sep 17 00:00:00 2001 From: Laurian-Dufrechou Date: Wed, 26 Oct 2022 16:13:54 +0200 Subject: [PATCH] RemoveNullChar fonction qui enleve le dernier charactere si il est null --- src/cryptography/Des.java | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/cryptography/Des.java b/src/cryptography/Des.java index 5c9a01e..692617a 100644 --- a/src/cryptography/Des.java +++ b/src/cryptography/Des.java @@ -121,6 +121,7 @@ public class Des { // On découpe en bloc de 8bits int[][] blocsOfOctet = decoupage(blocs, blocs.length / 8); + StringBuilder resultat = new StringBuilder(); for (int[] octet : blocsOfOctet) { // Convertis l'octet en chaine de caractère @@ -363,6 +364,32 @@ public class Des { return recollageBloc(msg_crypte_bit); } + /** + * Remove the last character if it contains only zeros + * @param message_decrypte + * + * @return int[] = array without the last 8 bits if they were all zeroes + */ + public static int[] removeCharNull (int[] message_decrypte){ + + int[][] blocsOfOctet = decoupage(message_decrypte, message_decrypte.length / 8); + + + int[] octet = blocsOfOctet[blocsOfOctet.length-1]; + StringBuilder stringBuilderOctet = new StringBuilder(); + for (int i : octet) stringBuilderOctet.append(i); + String stringOctet = stringBuilderOctet.toString(); + int c = Integer.parseInt(stringOctet, 2); + + if ((char) c == 0){ + int[] newTab = new int[message_decrypte.length-8]; + System.arraycopy(message_decrypte, 0, newTab, 0, newTab.length); + return newTab; + }else{ + return message_decrypte; + } + } + public String decrypte(int[] messageCode) { int[][] decoupe = decoupage(messageCode, messageCode.length / TAILLE_BLOC); @@ -381,7 +408,8 @@ public class Des { invPermutation(PERM_INITIALE, decoupe[i]); } int[] message_decrypte = recollageBloc(decoupe); - return bitsToString(message_decrypte); + + return bitsToString(removeCharNull(message_decrypte)); } }