Poster un nouveau sujet Poster une réponse
Algorithme de cryptage
Auteur Message
Cocodidou



Autorisation : Membre
Nb de messages : 84
Inscrit le : Dim 15 Mai 2011, 11:33
Posté le : Dim 15 Mai 2011, 12:07   Citer 

Salut à tous,
Voici mon premier post sur ce forum, et ceci pour vous poster un petit alogrithme de cryptage. Son principe est simple:
- À chaque caractère d'une chaîne, commune à toute machine, est attribué un code (01,02,03....n)
- Une chaîne entrée par l'utilisateur est coupée en morceaux de 4 caractères
- Chaque morceau de chaîne est traduit sous forme d'une concaténation de ces codes (05 - 12 - 22 - 29 - 18 => 0512222918)
- Cette concaténation est divisée n fois par une clé secrète, entrée par l'utilisateur, par exemple 218, jusqu'à prendre une valeur inférieure à 10000
- Le nombre de fois où la concaténation a été divisée est inscrite en tête du résultat (par exemple 12)
- Le nombre de chiffres contenu dans la puissance de division est inscrit en te de tout le nombre précédemment calculé (12 contient 2 chiffres, le nombre final commencera donc par 212)
- Le résultat final sera affiché à l'utilisateur qui devra le recopier sur un papier ou autre, puis le donner à son destinataire (il s'affiche sur deux lignes, mais il s'ait d'un nombre unique)

Le décryptage fait l'inverse: il retrouve la puissance à laquelle il va falloir élever la clé secrète et multiplier le code pour retrouver la séquence de caractères.

Assez de blabla, voici le programme:


Code

prgmCRYPT - TI-82 encryption system (c) 2011 Cocodidou
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.


EffEcr
Disp "TI-BASIC"
Disp "ENCRYPTION SYST"
Disp "(C) COCODIDOU"
"AZERTYUIOPQSDFGHJKLMWXCVBN:[theta]?! ,1234567890'[pi].()n+-*/e"->Chaîne2
Input "PRE-SHARED KEY? ",K
Menu("MODE","ENCRYPTION",E,"DECRYPTION",D)
Lbl E
EffEcr
1->A
{0}->L1
Disp "GENERATING SUBS"
While A<longueur(Chaîne2)
A->L1(A)
A+1->A
End
partEnt(log(max(L1))+1)->L
EffEcr
Input "PHRASE:",Chaîne1
EffEcr
Disp "ENCRYPTING..."
1->[theta]
{0}->L3
While [theta]<longueur(Chaîne1)-1
If [theta]+4[>=]longueur(Chaîne1)-1:Then
sous-Chaîne(Chaîne1,[theta],longueur(Chaîne1)-[theta]+1))->Chaîne4
Else
sous-Chaîne(Chaîne1,[theta],4)->Chaîne4
End
1->A
0->T
{0}->L2
While A<longueur(Chaîne4)+1
1->B
While sous-Chaîne(Chaîne4,A,1)[!=]sous-Chaîne(Chaîne2,B,1) et B<longueur(Chaîne2)-1
B+1->B
End
L1(B)->L2(A)
A+1->A
End
For(A,1,dim(L2))
10^(L)*(T+10^(-L)*L2(A))->T
End
0->P
While T>10000
T/K->T
P+1->P
End
If P=0:Then
T/K->T
P+1->P
T+11->T
End
partEnt(log(P)+1)->Q
Q*10^(Q)+P->P
If partEnt(T)[>=]1:Then
P*10^(partEnt(log(partEnt(T))+1))+T->T
End
partEnt(T)->L3(dim(L3)+1)
partDéc(T)->L3(dim(L3)+1)
[theta]+4->[theta]
End
EffEcr
Disp "CODES:"
For([theta],2,dim(L3),2)
Output(3,1,"                 ")
Output(4,1,"                 ")
Output(5,1,"                 ")
Output(3,1,"CODE")
Output(3,6,([theta]/2))
Output(3,9,"OF")
Output(3,12,(dim(L3)-1)/2)
Output(4,1,L3([theta]))
Output(4,1,L3([theta]+1))
Output(8,1,"PRESS ENTER...")
Pause
End
EffEcr
""->Chaîne1
""->Chaîne4
0->K
EffListe L1
EffListe L2
EffListe L3
Return
Lbl D
Input "HOW MANY CODES:",N
Disp "ENTER CODES..."
{0}->L3
For(Z,1,N)
Input X
X->L3(Z)
End
EffEcr
""->Chaîne1
Disp "DECRYPTING..."
1->Z
While Z<N+1
L3(Z)->C
partEnt(C)->E
partEnt(log(E)+1)->L
partEnt(C*10^(-L+1))->U
C-U*10^(L-1)->C
partEnt(C*10^(-L+U+1))->P
C-P*10^(L-U-1)->C
arrondi(C*K^P,0)->C
partEnt(log(longueur(Chaîne2))+1)->M
partEnt(log(partEnt(C))+1)->L
If pgcd(L,M)=1:Then
L+1->L
End
0->F
C->T
T*10^(-L)->T
While F<L
T*10^(M)->T
F+M->F
partEnt(T)->H
If H<longueur(Chaîne2)-1 et H>0:Then
If longueur(Chaîne1)[!=]0:Then
Chaîne1+sous-Chaîne(Chaîne2,H,1)->Chaîne1
Else
sous-Chaîne(Chaîne2,H,1)->Chaîne1
End
End
If H[>=]longueur(Chaîne2)-1:Then
Goto M
End
T-partEnt(T)->T
End
Z+1->Z
End
EffEcr
Disp "PHRASE:"
Output(2,1,Chaîne1)
Return
Lbl M
EffEcr
Output(1,1,"DECRYPTION ERROR (WRONG KEY?)")
Output(8,1,"PRESS ENTER...")
Pause
EffEcr
Return


Bon courage pour tout entrer, j'ai créé ce programme en une soirée...
Je vous propose pour tester le programme de décoder la phrase suivante:

Code

Clé partagée:684
Nombre de codes:7
117431,49122807
1273,745983807
1225.824892702
114769,4502924
118918.87134503
1219.7990856161
121932.60582316


Amusez-vous bien!
Cocodidou

 Adresse email Haut de page Bas de page 
 
tilo1996



Autorisation : Membre
Nb de messages : 129
Inscrit le : Sam 23 Avr 2011, 10:47
Posté le : Dim 15 Mai 2011, 12:09   Citer 

C'est compliqué pour faire un cryptage... La cryptographie affine ça marche bien aussi.... xD

----------------------
http://tchat-tout82.webuda.com/
 Adresse email Haut de page Bas de page 
 
Cocodidou



Autorisation : Membre
Nb de messages : 84
Inscrit le : Dim 15 Mai 2011, 11:33
Posté le : Dim 15 Mai 2011, 12:12   Citer 


Citer : tilo1996
C'est compliqué pour faire un cryptage... La cryptographie affine ça marche bien aussi.... xD


Aussi winkle.gif Mais je voulais m'amuser en faisant autre chose que ça winkle.gif

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 15 Mai 2011, 12:16   Citer 

Je me demande comment tu traîtes les restes des divisions.
Tu m'intéresses. bigmouth.gif

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Cocodidou



Autorisation : Membre
Nb de messages : 84
Inscrit le : Dim 15 Mai 2011, 11:33
Posté le : Dim 15 Mai 2011, 12:18   Citer 


Citer : linkakro
Je me demande comment tu traîtes les restes des divisions.
Tu m'intéresses. bigmouth.gif


Ben le reste est affiché sous forme de décimales après la virgule winkle.gif
J'avais essayé de faire en sorte qu'il n'y ait pas de reste , mais j'avais tellement de fois un pgcd entre la clé et la séquence de codes égal à 1, que j'ai dû me résoudre à utiliser des décimales...
Vu que la machine à calculer est limitée à 10 décimales, je suis obligé de couper ma chaîne en blocs de 4 caractères, sinon le taux d'erreur est trop important. À 4 caractères, je n'ai pas eu d'erreurs à déplorer jusqu'à présent winkle.gif

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Akmdad



Autorisation : Membre
Nb de messages : 717
Inscrit le : Mar 22 Jui 2010, 21:03
Posté le : Dim 15 Mai 2011, 18:20   Citer 

laugh.gif haha je suis mort de rire pour ton petit texte en english sur les droits... tu met a la premiere ligne un copyright et apres tu dis que le prog est libre hahaha laugh.gif

----------------------
retrouvez moi sur twitter!!!


j'ai une ti 82 stats fr et une ti89 titanium happy.gif
 Adresse email Haut de page Bas de page 
 
Cocodidou



Autorisation : Membre
Nb de messages : 84
Inscrit le : Dim 15 Mai 2011, 11:33
Posté le : Dim 15 Mai 2011, 21:11   Citer 


Citer : Akmdad
laugh.gif haha je suis mort de rire pour ton petit texte en english sur les droits... tu met a la premiere ligne un copyright et apres tu dis que le prog est libre hahaha laugh.gif


Ben je mets tout sous GPL winkle.gif
La page <http://www.gnu.org/licenses/gpl-howto.html> stipule que:

Citer
Whichever license you plan to use, the process involves adding two elements to each source file of your program: a copyright notice (such as “Copyright 1999 Terry Jones”), and a statement of copying permission, saying that the program is distributed under the terms of the GNU General Public License (or the Lesser GPL).

The copyright notice should include the year in which you finished preparing the release (so if you finished it in 1998 but didn't post it until 1999, use 1998). You should add the proper year for each release; for example, “Copyright 1998, 1999 Terry Jones” if some versions were finished in 1998 and some were finished in 1999. If several people helped write the code, use all their names.


Autrement dit, pour ceux qui ne comprennent pas, je dois inclure une notice de copyright et un bloc de licence - C'est ici le cas winkle.gif
En conséquence, c'est bien du libre tongue.gif
Je mets ça systématiquement avant chaque bloc de code, de sorte à être sûr que ça y est bien, même si la licence n'a pas d'intérêt (on ne la recopie pas sur la machine à calculer ici tongue.gif)

 Adresse email Haut de page Bas de page 
 
Cocodidou



Autorisation : Membre
Nb de messages : 84
Inscrit le : Dim 15 Mai 2011, 11:33
Posté le : Dim 29 Mai 2011, 16:49   Citer 

Voilà le programme pour les désireux de ne pas le recopier:
http://corentin.ferry.free.fr/CRYPT.83p

 Adresse email Haut de page Bas de page 
 
Cryptage XOR
Invité
Posté le : Ven 12 Avr 2013, 19:18   Citer 

Je voudrais vous poster un autre algo de cryptage :
Style AES, avec fonction XOR ( ouExclusif ) donc symétrique :

:0->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
:Input «LETTRE»,A
:0->B
:0->C
:0->D
:0->E
:0->F
:If A&#8805;16
:Then
:1->B
:A-16->A
:End
:If A&#8805;8
:Then
:1->C
:A-8->A
:End
:If A&#8805;4
:Then
:1->D
:A-4->A
:End
:If A&#8805;2
:Then
:1->E
:A-2->A
:End
:If A&#8805;1
:Then
:1->F
:A-1->A
:End
:Input «CRYPTKEY :»,G
:0->I
:0->J
:0->K
:0->L
:0->M
:If G&#8805;16
:Then
:1->I
:G-16->G
:End
:If G&#8805;8
:Then
:1->J
:G-8->G
:End
:If G&#8805;4
:Then
:1->K
:G-4->G
:End
:If G&#8805;2
:Then
:1->L
:G-2->G
:End
:If G&#8805;1
:Then
:1->M
:G-1->G
:End
:B ouEcxl I->N
:C ouEcxl J->O
bigmouth.gif ouEcxl K->P
:E ouEcxl L->Q
:F ouEcxl M->R
:If N=0
:Then
:If O=0
:Then
:If P=0
:Then
:If Q=0
:Then
:If R=0
:Then
:Disp «A»
:Else
:Disp «B»
:End
:Else
:If R=0
:Then
:Disp «A»
:Else
:Disp «B»
:End
:Else
:If R=0
:Then
:Disp «C»
:Else
:Disp «D»
:End
:End
:Else
:If Q=0
:Then
:If R=0
:Then
:Disp «E»
:Else
:Disp «F»
:End
:Else
:If R=0
:Then
:Disp «G»
:Else
:Disp «H»
:End
:End
:End
:Else
:If P=0
:Then
:If Q=0
:Then
:If R=0
:Then
:Disp «I»
:Else
:Disp «J»
:End
:Else
:If R=0
:Then
:Disp «K»
:Else
:Disp «L»
:End
:End
:Else
:If Q=0
:Then
:If R=0
:Then
:Disp «M»
:Else
:Disp «N»
:End
:Else
:If R=0
:Then
:Disp «O»
:Else
:Disp «P»
:End
:End
:End
:End
:Else
:If O=0
:Then
:If P=0
:Then
:If Q=0
:Then
:If R=0
:Then
:Disp «Q»
:Else
:Disp «R»
:End
:Else
:If R=0
:Then
:Disp «S»
:Else
:Disp «T»
:End
:End
:Else
:If Q=0
:Then
:If R=0
:Then
:Disp «U»
:Else
:Disp «V»
:End
:Else
:If R=0
:Then
:Disp «W»
:Else
:Disp «x»
:End
:End
:End
:Else
:If P=0
:Then
:If Q=0
:Then
:If R=0
:Then
:Disp «Y»
:Else
:Disp «Z»
:End
:Else
:If R=0
:Then
:Disp «(»
:Else
:Disp «)»
:End
:End
:Else
:If Q=0
:Then
:If R=0
:Then
:Disp «,»
:Else
:Disp «ESPACE»
:End
:Else
:If R=0
:Then
:Disp «GUILLEMETS»
:Else
:Disp «*»
:End
:End
:End
:End
:End

Attention, on introduit lettre par lettre. Taille : 934

  Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink