Le principe mathématique pour ceux que ca intéresse :
soit une suite b(b0, b1, b2, b3, ..., b6, b7) de nombres entiers tels que b(i) soit supérieur à la somme de ses prédécesseurs
P doit etre plus grand que la somme de tous les b. Q doit etre premier avec P.
P, Q et b constituent la partie privée du code.
soit a(a0, a1, a2, a3, ..., a6, a7) de nombres entiers tels que a(i) = kP +Qb(i) avec k un entier quelconque.
a consitue la clé privée.
On transmet donc uniquement la clé publique, qui permet de crypter, et on garde (précieusement :P) la clé privée et le couple P, Q
Pour crypter, on décompose un nombre K en binaire (ex "A" = 41 = 0101001) puis on crée le code R tel que R = K(0)a(0) + K(1)b(1) ....
R représente donc le chiffre (ou la lettre) K codé avec la clé publique.
Pour décrypter, il faut donc le message crypté R, la clé privée b et le couple P, Q
On calcule u et v tels que Pu + Qv = 1.
On calcule H, reste de la division Rv/P
On a alors H = K(0)b(0) + K(1)b(1) + ...
Et b(i)> a tous ses prédecesseurs
Si H - b(7) > 0 alors c(7) = 1
Si H - b(6) > 0 alors c(6) = 1 ...
On finit par obtenir c(c0, c1, c2, c3, ...) qui est la représentation binaire du message d'origine, dans notre exemple, 0101001 = "A"...
C'est assez simple, rapide, et relativement sûr :)