Crypter et décrypter un texte (string donc) très simplement
Fermé
Leotum
Messages postés
1
Date d'inscription
samedi 13 février 2016
Statut
Membre
Dernière intervention
13 février 2016
-
13 févr. 2016 à 11:38
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 13 févr. 2016 à 13:57
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 13 févr. 2016 à 13:57
A voir également:
- Crypter et décrypter un texte (string donc) très simplement
- Mettre un texte en majuscule - Guide
- Ouvrez ce fichier avec un éditeur de texte simple (bloc-notes, textedit, gedit, etc.) pour y découvrir le nom d’un objet. ✓ - Forum Études / Formation High-Tech
- Déflouter un texte - Forum Logiciels
- Comment retranscrire un entretien audio en texte - Guide
- Excel cellule couleur si condition texte - Guide
1 réponse
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
13 févr. 2016 à 13:57
13 févr. 2016 à 13:57
Bonjour,
Il y a plusieurs manière de faire, mais généralement plus c'est simple, moins c'est sécurisé...
Par exemple, en sachant que si tu précises la même graine au constructeur de Random tu obtiens toujours la même série de nombre aléatoires, tu peux te servir de cette graine comme clé de cryptage et de la série de nombre aléatoires comme masques successifs pour ton message.
Il y a plusieurs manière de faire, mais généralement plus c'est simple, moins c'est sécurisé...
Par exemple, en sachant que si tu précises la même graine au constructeur de Random tu obtiens toujours la même série de nombre aléatoires, tu peux te servir de cette graine comme clé de cryptage et de la série de nombre aléatoires comme masques successifs pour ton message.
private static <T, R> R transformation(T msg, long key, Function<T, byte[]> msgToBytes, Function<byte[], R> bytesToResult) { Random rand = new Random(key); byte[] tab = msgToBytes.apply(msg); for (int i = 0; i < tab.length; i++) tab[i] ^= rand.nextInt(); return bytesToResult.apply(tab); } public static byte[] encrypt(String msg, long key) { return transformation(msg, key, m -> m.getBytes(), t -> t); } public static String decrypt(byte[] msg, long key) { return transformation(msg, key, m -> Arrays.copyOf(m, m.length), t -> new String(t)); } public static void main(String[] args) { String msg = "Hello World!"; long key = 42; System.out.println(msg); // "Hello World!" byte[] tab = encrypt(msg, key); System.out.println(Arrays.toString(tab)); // [125, -110, -115, 68, -117, 107, -44, 2, -52, -10, -39, -3] String res = decrypt(tab, key); System.out.println(res); // "Hello World!" }