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
Bonjour,
je cherche un moyen de crypter et decrypter des données(un texte prenant en compte tous les caractères; et choisir un fichier texte pour refaire le même exercice).Mon objectif est d'être en mesure de créer un logiciel me permetant de le faire des maniere personaliser et si possible pas trop compliqué(implémentable directement de préférence ou une bonne directive).
Merci de votre collaboration

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
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.

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!"
}


0