// Programme exemple d'usage de la proglet
import java.math.BigInteger;

void main() {
  double p = pow(23);
  // Alice crée une clé privée et une clé publique pour le codage et décodage de message
  // - keys[0] est la clé privée D, et (keys[1],keys[2]) sont les clés publiques (E, N).
  BigInteger keys[] = createKeys();
  //
  // Alice envoie sûrement (keys[1],keys[2]) à Bob et garde secrètement keys[0]
  //
  // Bob a message secret à envoyer à Alice
  String messageDeBob = "Salut à toi, humaine, que le meilleur soit à vec toi";
  // Bob encryptpe ce message à l'aide d'une clé (publique):
  BigInteger crypt = encrypt(messageDeBob, keys[1], keys[2]);
  //
  // - Ce message encrypté est sûrement diffusé de Alice à Bob
  //
  // Alice décrypte ce message à l'aide de la clé privée du jeu de clés
  String messageChezAlice = decrypt(crypt, keys);
  //
  // - Et on peut alors vérifier que le message est correct
  println("Réception :" + equal(messageChezAlice, messageDeBob));
  // - Même si il était indéchiffrable
  println("Message envoyé: '" + crypt + "'");
}