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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 13 févr. 2016 à 13:57
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 13 févr. 2016 à 13:57
A voir également:
- Crypter et décrypter un texte (string donc) très simplement
- Excel cellule couleur si condition texte - Guide
- Transcription audio en texte word gratuit - Guide
- Mettre un texte en majuscule - Guide
- Texte argumentatif sur les avantages et les inconvénients du téléphone portable ✓ - Forum Mobile
- Si cellule contient texte alors ✓ - Forum Excel
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
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!" }