Page 1 sur 2

Procedure Vigenere

Publié : mer. 03/août/2016 9:53
par Zorro
toujours dans le cadre de mon EPB , je recherche un moyen de cryptage fiable
et rapide

voici ma version de l'algo de Vigenere qui consiste a encoder un texte avec un mot de pass
chaque lettre du texte en clair et chaque lettre du mot de pass sont recherché dans une table (un alphabet)
la position de ces lettres trouvé dans l'alphabet sont additionné
c'est la lettre a la position correspondante a ce resultat qui est ecrit ...

pour le decodage, il suffit de soustraire la position dans l'alphabet de la lettre codé avec la position de la lettre du pass
pour avoir la position de la lettre en clair ...

en clair :
alphabet.s = "abcdef"
dans cet alphabet a=1,b=2,c=3 ,d=4,e=5,f=6

mot_de_pass="b"
lettre_en_clair="c"

on va encoder "c" avec le pass "b"

"c" a la position 3 dans l'alphabet
"b" a la position 2
donc 3+2=5 , la lettre utiliser pour encoder c'est donc "e" --> "c"+"b"="e" :)
pour le decodage
nous avons "e" (5em lettre de notre alphabet )
on soustrait la position de la lettre du mot de pass "b" (2em lettre de notre alphabet )
donc 5-2=3
la troisieme lettre de notre alphabet c'est donc "c" ; on retrouve bien notre lettre de depart :)

voici mon code , qui en plus inclue un allongeur de mot de pass pour que le mot de pass soit aussi long que le truc qu'on encode
ça garantie une quasi inviolabilité du code :)

Code : Tout sélectionner


; Vigenere Codec
Declare.s rallonge_password(pass.s,longueur_pass)
Declare.s vigenere(txt.s,pass.s,mode)



txt.s="il etait un petit navire, qui n'avait ja ja jamais naviguée , qui n'avait ja ja jamais naviguée hoé hoé !"
pass.s="hello , le soleil brille brille brille ."


Debug "Phrase en clair de depart :"+txt.s
Debug "mot de pass :"+pass.s
Debug ""
mode=1 ; encode
encode.s=Vigenere(txt.s,pass.s,mode)
Debug "phrase encodée :"+encode.s
Debug ""
mode=0 ;decode
decode.s=Vigenere(encode.s,pass.s,mode)
Debug "phrase décodée :"+decode.s


Procedure.s rallonge_password(pass.s,longueur_pass)
		; By Zorro
		; le but de cette procedure, est de rallonger un mot de pass en prenant des lettres de ce mot de pass
		; de la sorte, on peut avoir un mot de pass aussi long que le truc qu'on encode/decode
		; ce qui garantie un quasi inviolabilitée du codage :o)
		Protected passwrd.s,long
		RandomSeed(8) ; <<<< ceci pour etre sur qu'avec un mot de pass precis, on est toujours le meme résultat une fois rallongée !! (pour le decodage c'est mieux LOL )
		; par exemple avec le pass "Soleil" et la longueur 23 on aura toujours ceci de généré : "SoleilieoeSeiolollilieS"  :o)
		long= Len(pass.s)-1		
		If long<longueur_pass				
				manque=(longueur_pass-long)-1
				passwrd.s=pass.s
				For y= 1 To manque
						pos=Random(long,1)						
						passwrd.s=passwrd.s+Mid(pass.s,pos,1)					
				Next y
				ProcedureReturn passwrd.s
		Else
				ProcedureReturn pass.s
		EndIf
EndProcedure
Procedure.s Vigenere(txt.s,pass.s,mode)
			; By Zorro
			; ici j'utilise un alphabet tres classique, mais le mieux serai de melanger les lettres de l'alphabet
			; pour ne pas rendre prévisible l'emplacement de telle ou telle lettre ;o)
			; tout caractere n'etant pas dans l'alphabet , est utilisé telquel (je prends son code Ascii)
			; j'ai Ajouté l'espace, pour  ne pas avoir une découpe des mots qui aparaitrait dans le resultat codé :o)
			Alphabet.s="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
			sortie.s=""
			If Len(pass.s)<Len(txt.s)
				pass.s=rallonge_password(pass.s,Len(txt.s))
			Else
				pass.s=Left(pass.s,Len(txt.s))
			EndIf
			Select mode
			Case 1 ; Action encodage				
				For p=1 To Len(txt.s)
					car_clair=FindString(Alphabet.s,Mid(txt.s,p,1)) 
					car_pass=FindString(Alphabet.s,Mid(pass.s,p,1))
					car_encode=(car_clair+car_pass)
					If car_encode >Len(Alphabet.s)
						car_encode=car_encode-Len(Alphabet.s)
					EndIf
					If car_clair=0					
						sortie.s=sortie.s+Mid(txt.s,p,1)
					Else
						sortie.s=sortie.s+Mid(Alphabet.s,car_encode,1)
					EndIf
					
				Next p
			Case 0 ; Action décodage
				For p=1 To Len(txt.s)
					car_clair=FindString(Alphabet.s,Mid(txt.s,p,1))
					car_pass=FindString(Alphabet.s,Mid(pass.s,p,1))	
					
					car_decode=(car_clair-car_pass) 
					If car_decode<1:car_decode=Len(Alphabet.s)+car_decode	:EndIf
					If car_clair=0						
						sortie.s=sortie.s+Mid(txt.s,p,1)
					Else
						sortie.s=sortie.s+Mid(Alphabet.s,car_decode,1)
					EndIf
				Next p
				
			EndSelect
			
			ProcedureReturn sortie.s
		EndProcedure

; Epb


Re: Procedure Vigenere

Publié : mer. 03/août/2016 10:23
par Zorro
fidele a mes habitudes, petite correction de code de derniere seconde :)
il y avait un probleme pour le decodage :)

Re: Procedure Vigenere

Publié : mer. 03/août/2016 10:34
par Kwai chang caine
Merci du partage, marche nickel aussi 8)
Remarque on peut aussi enquiller les cryptages les uns derrière les autres XOR + Vigenere + Etc.., ou même plusieurs fois le même cryptage....
On se demande comment ils font pour arriver à décrypter après ce genre de manip, ils sont trop forts 8O
Un cavalieeeeeeer a écrit :il y avait un probleme pour le decogade
Il reste peut être aussi, un problème pour la dyslexie ?? :mrgreen:

Re: Procedure Vigenere

Publié : mer. 03/août/2016 11:37
par Zorro
Kwai chang caine a écrit : On se demande comment ils font pour arriver à décrypter après ce genre de manip, ils sont trop forts 8O
je sais pas de qui tu parles lorsque tu dis "ils"
mais ce que je sais, c'est que bien des fois, "ils" n'y arrive tout simplement pas ! :lol:

Re: Procedure Vigenere

Publié : mer. 03/août/2016 12:20
par JohnJohnsonSHERMAN
Décrypter ca? Ben bon courage hein ! Cela dit y'a des méthodes, comme celle de Kasiski : https://fr.wikipedia.org/wiki/Cryptanal ... en%C3%A8re
Mais ca reste difficile, d'autant que si la clé est aussi longue que le texte a coder, ces méthodes ne marchent plus et le code est inviolable.

Tiens ca me donne une idée... faire un espéce de challenge sur le forum, ou on posterait des codes et les autres devraient décrypter :twisted:

Re: Procedure Vigenere

Publié : mer. 03/août/2016 12:22
par Zorro
JohnJohnsonSHERMAN a écrit : Tiens ca me donne une idée... faire un espéce de challenge sur le forum, ou on posterait des codes et les autres devraient décrypter :twisted:
deja fait ;)

Re: Procedure Vigenere

Publié : mer. 03/août/2016 12:25
par JohnJohnsonSHERMAN
ah bon? ou?

Re: Procedure Vigenere

Publié : mer. 03/août/2016 12:33
par Ar-S
J'avais proposé de participer (sur mon forum pour ne pas poluer celui ci) des petits contests
http://www.purebasic.fr/french/viewtopi ... st#p178908

Devant le manque de candidats, j'ai lâché l'affaire.

Re: Procedure Vigenere

Publié : mer. 03/août/2016 12:49
par JohnJohnsonSHERMAN
Dommage... ca a dérivé en codes pb, moi ce que je propose c'est genre un texte codé, et démerdez-vous avec :twisted: Remarque, on peut aussi préciser le code utilisé, ou la clé ou autres indices pour aider les autres membre à décrypter... ou pas !

Re: Procedure Vigenere

Publié : mer. 03/août/2016 13:40
par Kwai chang caine
d'un Z qui veut dire... a écrit :je sais pas de qui tu parles lorsque tu dis "ils"
mais ce que je sais, c'est que bien des fois, "ils" n'y arrive tout simplement pas !
Je parle de tous ces mecs, qui bossent la dedans
A l'armée, dans les "sicraiteservice", moi qui arrive tout juste a orthographier mon propre nom 8O
Ils m'epatent, c'est des "hackers des mots"

@JJS
Y'a un truc qui me chiffone, si la clef fait whatmilles mots avec des caracteres de "oumfa", du coups impossible de s'en rappeller et faut la noter quelque part.
Du coups elle est vulnerable, et il faudrait crypter la clef à son tour, etc.... :lol:

Pour ton idée, j'y avais aussi pensé, de proposer un texte codé par mon cryptage perso que j'ai mis "one million dollars" d'heures à créer :idea:
Mais je me suis dit : "si un margoulin, me trouve mon texte en 10 mn, il va me gacher, ma journée et tout le reste de mon existence, peut etre même celle des 3 générations de gosses que j'ai pas encore fait" :?
En fin de compte pour l'instant je dors tranquille ...mon cryptage est inviollable...normal il est inconnu :mrgreen:

Re: Procedure Vigenere

Publié : mer. 03/août/2016 14:25
par Zorro
JohnJohnsonSHERMAN a écrit :Dommage... ca a dérivé en codes pb, moi ce que je propose c'est genre un texte codé, et démerdez-vous avec :twisted: Remarque, on peut aussi préciser le code utilisé, ou la clé ou autres indices pour aider les autres membre à décrypter... ou pas !
oui ça a deja été fait !(sur notre forum ) demande a SPH, venom etc ...
effectivement ensuite ça derive sur du code Purebasic, et des prises de becs :lol:
il y a meme quelques Pirate qui sont venu y mettre du leur :)

mais le but de ce forum c'est bien de proposer du code ...
Ils m'epatent, c'est des "hackers des mots"
oui mais justement, il n'y arrivent pas toujours !!
les cryptage sont complexe, meme en faisant tourner des grosses babasses pendant des plombes, certains code
peuvent resister ... car bien que le langue Française soit limité en nombre de mots (donc crackable )
la signification, elle peut echapper a tout decodage :)

imagine, les mecs font tourner pendant 2 ans un Cray pour decoder ce pu**** de message

et a la fin, il y arrive :D cool , et qu'est-ce que ça dit demande le commandant ?

"ben heu ..... ça dit : "Les sanglots longs des violons de l'automne blessent mon cœur d'une langueur monotone."

:lol: mince, qui va savoir qu'il s'agit du signal pour le débarquement de Normandie ?? :D

Re: Procedure Vigenere

Publié : mer. 03/août/2016 15:10
par venom
Zorro a écrit :imagine, les mecs font tourner pendant 2 ans un Cray pour decoder ce pu**** de message

et a la fin, il y arrive :D cool , et qu'est-ce que ça dit demande le commandant ?

"ben heu ..... ça dit : "Les sanglots longs des violons de l'automne blessent mon cœur d'une langueur monotone."

:lol: mince, qui va savoir qu'il s'agit du signal pour le débarquement de Normandie ?? :D
:lol: J'imagine bien la scene dans leurs bureau :P

oui si non il faut crypter une phrase déjà crypter a moult reprises





@++

Re: Procedure Vigenere

Publié : mer. 03/août/2016 15:12
par JohnJohnsonSHERMAN
Comandant, le supercalculateur Colossus a cramé car le code était trop compliqué... :?

Re: Procedure Vigenere

Publié : mer. 03/août/2016 15:15
par venom
Ou tellement simple que le supercalculateur n'a même pas essayé :wink:

En tout cas on est paré avec toutes ces codes décryptage by zorro :D On les additionne tous on a un truc " inviolable "






@++

Re: Procedure Vigenere

Publié : mer. 03/août/2016 15:18
par JohnJohnsonSHERMAN
venom a écrit :En tout cas on est paré avec toutes ces codes décryptage by zorro
Pfff... C'est moi qui ai posté le premier code de Vigenére sur son topic "procedure Xor" ! :roll: