Bonsoir tout le
C´est après deux semaines de travail que j´enfin finis la première version du langage codé inventé de moi et seulement de moi, le RCA. C´est un système de code qui utilise un algorythme très original (ce que je cherchais à faire). Ce n´est pas comme n´importe quel langage statique qui ne vaut rien.
Prenons comme exemple le ROT-13, ce langage simple, qui consiste à faire tourner de 13 places dans l´alphabet la lettre concerné. Si nous voulons écrire le mot "jeuxvideo" en ROT-13, nous trouverons "wrhkivqrb", et le mot restera toujours le même, même si j´écriveais "jeuxbideo" nous trouverons "wrhkovqrb" et on peut constater que rien ne change, seulement la valeur du lettre B. La lettre J restera toujours W, ou qu´il soit.
Le RCA n´utilise pas ce simple système, mais, comme je le disais avant, un algorythme original, différent des langages statiques. J´avoue que ce n´est pas encore du MD5, mais c´est après tout, un travail que j´ai fait seulement pour le plaisir.
Je vais vous faire un C/C direct du manuel du codage/décodage en RCA. (Cela sera peut être un peu déboité car la police n´est pas la même qu´écris sur le manuel)
--- DÉBUT RCA_Coding_Decoding_FR.txt ---
RCA Codage/Décodage Manuel
--------------------------
by Rehn Christoffer aka Hoffa
CODAGE EN RCA :
---------------
Variables utilisés :
--------------------
Char. Valeur en RCA
a = 1
b = 2
c = 3
d = 4
e = 5
f = 6
g = 7
h = 8
i = 9
j = 10
k = 11
l = 12
m = 13
n = 14
o = 15
p = 16
q = 17
r = 18
s = 19
t = 20
u = 21
v = 22
w = 23
x = 24
y = 25
z = 26
Codage :
--------
Dans cette partie, nous allons coder le mot EXAMPLE, biensûr en langage codé RSA.
Première chose à faire, est d´identifier le nombre de charactères dans le mot, dans ce cas-ci, la réponse est 7.
EXAMPLE
1234567
En RCA, il n´existe que deux variables pour définir le nombre de lettres d´un mot. Ces deux variables sont x et y :
x = Deux charactères
y = Un charactère
Comme on peut le voir, le mot constitue de plus de deux charactères, comment faire alors ?
C´est simple, faire une addition des variables, le plus simplement biensûr. Notre code jusqu´ici sera alors :
xxxy
x + x + x + y = 7
2 + 2 + 2 + 1 = 7
Maintenant il faut ajouter la première lettre du mot en Majuscules, cela sera utile plus tard pendant le codage (Biensûr, vous n´allez pas
chaque fois mettre un E, seulement si le mot commence par ce dernier):
xxxyE
Ce que vous devez retenir maintenant :
-"a" en valeur veut dire "La prochaine lettre sera après celui d´avant, dans l´alphabet"
-"b" en valeur veut dire "La prochaine lettre sera avant celui d´avant, dans l´alphabet"
-"r" en valeur veut dire "Répéter la lettre d´avant"
Maintent nous devons coder la lettre X en RCA. Pas besoin de vraiment "coder" la première lettre, car elle est déjà indiquée dans le code
(E). Ce que nous devons faire, est d´indiquer au code, le nombre de sauts fait, et dans quel sense. Pour nous cela serait "a19", car la
lettre X est 19 sauts après la lettre E. Notre code jusqu´a là :
xxxyEa19
La prochaine lettre est la lettre A. Pour l´écrire dans le code, il suffit seulement de regarder en combien de sauts on arrivé de la lettre A
à la lettre M, et d´indiquer dans quel sense (a ou b). Dans ce cas ci, "b23" :
xxxyEa19b23
La même manipulation sera faite pour chaque charactère. Après avoir codé toutes les lettres, vous devriez avoir le code suivant :
xxxyEa19b23a13a3b4b7
Le même syntaxe sera biensûr utilisé pour n´importe quel autre mot.
Vous vous demandez surement l´intérêt d´indiquer le nombre de lettres que contient le mot (dans ce cas xxxy), ce n´est qu´un simple moyen
pour vérifier si le mot trouvé est correcte,
en comparant le mot trouvé aux nombre de lettres.
DECODAGE RCA :
--------------
Pour décoder un code codé en RCA, il suffit d´analyser le code, et de faire la même manipulation que toute à l´heure. Le code que nous allons
décoder, est la suivante :
xxxyDa1b2a12b11a1b1
Analysons le code :
-------------------
Ce que nous allons faire maintenant, est de décoder chaque partie un par un, en supprimant la partie concerné dans le code fur et à mesure,
et de le noter, en notre langage. On peut tout de suite constater que le mot contient 7 lettres (les xxxy au début du code). On va les
supprimer du code RCA, et de noter cela :
Code actuel :
Da1b2a12b11a1b1
Code actuel décodé :
.......
On peut également voir que la première lettre du mot est D :
Code actuel :
a1b2a12b11a1b1
Code actuel décodé :
D......
La prochaine partie est a12, ce qui signifie que la prochaine lettre est à 12 sauts en avant dans l´aplhabet. Normalement vous arriverez sur
la lettre E :
Code actuel :
b2a12b11a1b1
Code actuel décodé :
DE.....
b2 est la prochaine partie, qui signifie que la prochaine lettre est à 2 sauts en arrière dans l´alphabet. Nous arrivons sur la lettre C :
Code actuel :
a12b11a1b1
Code actuel décodé :
DEC....
a12, 12 sauts en avant dans l´alphabet, nous trouvons un O :
Code actuel :
b11a1b1
Code actuel décodé :
DECO...
b11, 11 sauts en arrière dans l´alphabet, nous trouvons un D :
Code actuel :
a1b1
Code actuel décodé :
DECOD..
a1, 1 saut en avant dans l´alphabet, nous trouvons un E :
Code actuel :
b1
Code actuel décodé :
DECODE.
b1, 1 saut en arrière dans l´alphabet, nous trouvons un D :
Code actuel :
-
Code actuel décodé :
DECODED
Voilà le code enfin décodé. Faire la même manipulation pour chaque mot.
--- FIN RCA_Coding_Decoding_FR.txt ---
Je suis en train de travailler sur la prochaine version du langage, nommé RC2, qui saura coder des éspaces et des décimales.
J´aurais besoin de l´aide d´un codeur, pour coder un Codeur/Décodeur en RCA. Je pourrais le faire moi même en tapant quelques lignes en Python, mais comme je n´ai pas le temps pour l´instant, l´aide ne serais pas de refus.
Voilà, merci à tous ceux qui ont tout lu, et j´attends vos commentaires !
![]()
Il n´y a pas assez de langages comme ça, il fallait que t´en crées un autre.
Je ne vois pas si ta commentaire est positive ou ironique.
Ni l´un ni l´autre. C´est bien beau de créer un langage mais il faudrait aussi qu´il ait un quelconque avantage par rapport aux autres langages existants.
Comme je le disais, tout ceci était fait pour le plaisir. Tout ce que je cherchais à faire c´était de trouver un algorythme original, différent des autres.
Qui sait à quoi il peut servir
quand j´aurais fini la deuxième version, je vais essayer de remonter la sécurité du code, sans jamais dépasser la ligne rouge. Je ne cherche pas à faire un code de Ronald Rivest, mais un code situant entre les codes statiques et le MD.
hoffa
"Je ne vois pas si ta commentaire est positive ou ironique."
je dirais plutôt ironique ^_^ (et c´est UN commentaire, donc TON commentaire)
Bon, sinon, j´ai survolé vite fait ton message...
ton code est marrant, mais ne sert à rien (excuse moi d´être aussi brutal), la clef de codage est statique, il suffit de savoir que ton texte est codé en RCA pour savoir le décodé, donc celà n´a que peu d´interet (voir aucun en fait pour une application autre que pour s´amuser)
de deux, même si la clef devenait dynamique (possibilité de changer la manière de coder), il reste toujours le problème de la transmition de cette dernière, qui peut justement être sujet à espionnage (dans un cadre professionel).
Je ne saurais que te conseiller d´aller voir les algorithme déjà existant, notamment le DES qui est jugé comme incassable pour des clefs suffisament grandes genre le 512 bits (du moins, le temps pour casser le code est supérieur à la vie humaine)
ensuite, le RSA (Rivest Shamir Adleman, acronyme de ses inventeurs) qui permet de transmettre des informations sans qu´il ne puisse y avoir interception de la clef.
Actuellement, les logiciels de cryptage utilisent les deux, le RSA est théoriquement 100% sur (du moins jusqu´à ce qu´on trouve un moyen de trouver rapidement les facteurs premiers entre eux d´un nombre)mais est très lourd en calcul.
Le DES est sur, mais le problème est la transmition de la clef. On encode donc en DES le fichier/texte/message, puis on encode la clef en RSA, et on transmet le tout.
Pour faire un rapide résumé, le RSA par du principe qu´il est très difficile de retrouver les facteurs premier d´un nombre si ce dernier est grand. On va donc créer deux clef, une clef privée, composée de deux nombre premiers entre eux très grand, qui ne sera jamais transmise, et une clef publique, qui sera le résultat d´une opération de multiplication entre les deux nombres de la clef privé.
Cette clef publique est transmise à tout le monde.
Quand une personne veut Crypter un message pour Jean, il va récupérer la clef publique de Jean (accessible à tous) et encoder au moyen de cette clef publique. L´algorithme utilisé est de telle sorte qu´une fois encodé, on ne peut pas décodé avec la clef publique, mais seulement avec la clef privé, qui elle n´appartient qu´à Jean, donc seul Jean sera à même de décrypter le message, même si ce dernier est intercepté, il ne servira à rien.
"Je ne vois pas si ta commentaire est positive ou ironique."
je dirais plutôt ironique ^_^ (et c´est UN commentaire, donc TON commentaire)
Ah oui, mais ma langue maternelle n´est pas le francais. Je suis bel et bien un immigrant nordique aux yeux bleus, je suis Finlandais
Bon, sinon, j´ai survolé vite fait ton message...
ton code est marrant, mais ne sert à rien (excuse moi d´être aussi brutal), la clef de codage est statique, il suffit de savoir que ton texte est codé en RCA pour savoir le décodé, donc celà n´a que peu d´interet (voir aucun en fait pour une application autre que pour s´amuser)
Je ne dirais pas que le code est statique. Je dirais plustôt semi-statique. Car dans ce codage, dans "jeuxvideo", la lettre x ne sera pas représenté de la même facon que le x dans "jeuxbideo", donc elle n´est pas complètement statique. ![]()
Quand je dis statique, je parle d´un code qui a comme devoir de donner à chaque charactère un variable, et écrire en representant la valeur du charactère.
certes, effectivement, un même caractère aura deux traductions différentes, mais j´entends par clef statique une impossibilité de modifier le texte codé :
jeuxvideo une fois codé sera toujours traduit pareil!
Un simple alphabet de substitution a une clef dynamique, selon quel lettre tu attribue à telle autre.
La clef, c´est la manière de crypter ton texte. Ici, elle est toujours la même, elle ne dépend d´aucune variable extérieure (comme un mot de passe par exemple), c´est donc un code statique.
j´éspère que tu as compris le principe.
Regarde un code un peu plus complexe comme le vigénère (code de substitution polyalphabétique) qui a besoin d´une clef, mais cette clef permet de modifier complètement la traduction du message.
pourtant, là encore, une même lettre dans le texte n´est pas forcément la même une fois codé.
http://fr.wikipedia.org/wiki/Chiffre_de_Vigenère
Sachant que le vigenère se casse relativement facilement. Pour ton codage, il saute en quelques dixièmes de seconde avec une attaque de type force brute avec dictionnaire. Tu peux toujours t´en servir pour coder l´aheure du prochain goûter du clan des 7.
![]()
hitman -> c´était pour montrer un exemple de code ou la même lettre à deux endroits différents n´est pas forcément codé pareillement, mais qui dépend d´une clef.
Je sais bien que le vigénère n´est pas sûr (encore que lorsque l´on utiliser une clef aléatoire de la longueur du texte, celà peut devenir hardu à décoder) mais c´était pour l´exemple.
"encore que lorsque l´on utiliser une clef aléatoire de la longueur du texte, celà peut devenir hardu à décoder"
C´est le principe du masque XOR jetable, qui lui, est inviolable (Reste qu´il faut transmettre ce masque qui fait la longueur du message et ça, c´est un problème...).
d´ou le principe DES+RSA
algorithme à clef rapide, complexe à décoder sans la clef, et echange de la clef plus lent, (mais comme la clef est théoriquement légère, c´est pas grave) mais sans risque d´interception. (enfin, je pense que tout le monde à compris)
J´allais alléguer à peu près la même chose que Hitman, j´ai récemment du me documenter sur le sujet. ![]()
wikipédia est bien fournie, sinon, je conseille largement le livre "histoire des codes secrets" de Simon Singh
http://www.amazon.fr/Histoire-codes-secrets-Simon-Singh/dp/2253150975
un très bon livre pour s´initier, sous forme de roman, il passe en revue les codes secrets depuis l´antiquité (grec, chiffre de Cesar ) aux moyens moderne (DES, RSA) en passant par Enigma, Vigénère et autres cryptographie militaire.
J´ai lu un extrait du bouquin dont tu parles. ![]()
J´ai jamais dit que j´utiliserai ce codage dans un cadre professionel. L´avantage ? J´en sais rien. L´avantage du ROT13 ou du Sytème de César ? J´en sais rien.
En tout cas, le mien est plus sur que ces derniers.
"En tout cas, le mien est plus sur que ces derniers."
Le seul problème, c´est qu´on est plus à l´Antiquité.