Page 2 sur 2

Re: Crypter un texte

Publié : mer. 11/janv./2012 19:43
par Kwai chang caine
c'est pourquoi ton idée de poluer la phrase codé est bonne
C'est vrai que dans un soucis de faire toujours les cryptages les plus courts, on a tendance a pas penser à ça...
Si c'est pas foireux comme idée ça :mrgreen: cool !!! 8)

Moi j'ai une question, puisque vous parler cryptage et que vous avez l'air de vous y connaitre drôlement.
J'entend souvent parler de cryptage a 64 bits, 128 bits etc...de XOR et plein d'autres choses...

Comme j'y connais rien à tout ça, quand j'ai eu besoin de crypter une clef, je me suis créé toute une serie de fonctions
ReverseString
CaractereEnAscii
ComplementeASCII (100-ASCII)
Etc ...
Et je les mixes ensemble afin d'obtenir une clef :roll:

Ma méthode n'est elle pas plus sure qu'un codage que tout le monde connait comme le XOR apparemment ou tout autre méthode que je ne connait pas comme cette histoire de 64 bits, 128 Bits etc...
Sans parler de cette histoire que DOBRO parle avec des giciels qui lisent dans les EXE, c'est sur que comme il dit si y'a le decrypteur intégré dans l'exe...ce doit pas être trop dur pour un CAID de remonter le courant comme les saumons :roll:

Re: Crypter un texte

Publié : mer. 11/janv./2012 21:01
par Backup
Je ne suis pas un spécialiste de la crypto , mais je pense que non , ta méthode n'as rien de mieux que le Xor

il faut savoir qu'un Xor peut etre tres tres efficace , si la clef qui sert a crypter la donnée est aussi grande que la donnée elle meme

cependant, il reste des prg d'analyse qui regarde le pourcentage de lettre présentes dans la langue française

voir des séquence de lettres comme "en" , "et" ,"ent" ect ...
en fonction de ces pourcentage , on sait qu'il y a plus de chance de rencontrer tel lettre dans un texte e, français, qu'en Anglais
, il n'y a qu'a observer un clavier d'ordi usé, pour se rendre compte visuellement de ça

fonction de ce savoir, on peut faire une recherche sur ces lettres et sequence de lettre , et déterminé certaines répétition
qui peuvent aider a retrouver la clef de codage ...

le nombre de bits c'est la taille de la clef de codage , (qui est réglementé en France) :)

Re: Crypter un texte

Publié : mer. 11/janv./2012 21:16
par Kwai chang caine
le nombre de bits c'est la taille de la clef de codage , (qui est réglementé en France)
Merci de ton explication DOBRO 8)
Donc 128 bits ce serait une clef de 128 caracteres ???

Re: Crypter un texte

Publié : mer. 11/janv./2012 21:28
par SPH
Kwai chang caine a écrit :
le nombre de bits c'est la taille de la clef de codage , (qui est réglementé en France)
Merci de ton explication DOBRO 8)
Donc 128 bits ce serait une clef de 128 caracteres ???
Non, 128 bits, c'est 128/8 caracteres; soit 16 caracteres

Re: Crypter un texte

Publié : mer. 11/janv./2012 21:30
par SPH
Un xor avec une clé qui se repere est largement cassable. Je l'ai montré a plusieurs reprises dans nos test de crypto que l'on a fait il y a 1 an.

Re: Crypter un texte

Publié : mer. 11/janv./2012 21:38
par Le Soldat Inconnu
Moi, j'ai juste utilisé une clé XOR puis j'ai mélangé les caractères (tout simplement, j'ai pris le premier caractère puis le dernier, puis le second, puis l'avant-dernier, etc...)

Le cryptage en unicode est plus complexe car je combine les valeurs 0 des caractère simple (en unicode, un caractère est sur 2 octets, mais une caractère "classique" comme "a", "b", ... est composé de "a" suivant d'un "0", donc j'ai combiné pour gagner en longueur sur le texte crypté.

Voici mon code, et bravo à Dobro :)

Code : Tout sélectionner

Texte.s = "Bonjour les amis," + #crlf$ + "je vous adore !"


Procedure.s CrypText(Texte.s, Cle.l = 174)
	Protected Cryptage.s
	Protected Table.s
	Table = "0123456789ABCDEF"
	Table + "GHWJKLMNXPQRSTUV"
	Protected NewList Valeur.l()
	Protected NewList ValeurCryptee.s()
	; Mise en forme des sauts de ligne
	Texte = ReplaceString(Texte, #crlf$, Chr(10))
	Texte = ReplaceString(Texte, Chr(13), Chr(10))
	
	Texte_Longueur = StringByteLength(Texte)
	For Index = 0 To Texte_Longueur - 1
		AddElement(Valeur())
		Valeur() = PeekB(@Texte + Index) & $FF
	Next
	
	ForEach Valeur()
		; Valeur suivante
		CompilerIf #PB_Compiler_Unicode
			If NextElement(Valeur())
				Valeur_Suivante = Valeur()
				PreviousElement(Valeur())
			Else
				Valeur_Suivante = -1
			EndIf
		CompilerEndIf
		; Cryptage
		AddElement(ValeurCryptee())
		CompilerIf #PB_Compiler_Unicode
			If Valeur() = 10 And Valeur_Suivante = 0 ; Saut de ligne
				ValeurCryptee() = #crlf$
				NextElement(Valeur())
			Else
				ValeurCryptee() = Hex(Valeur() ! Cle)
				If Valeur_Suivante = 0
					ValeurCryptee() = Mid(Table, FindString(Table, Left(ValeurCryptee(), 1)) + 16, 1) + Right(ValeurCryptee(), 1)
					NextElement(Valeur())
				EndIf
			EndIf
		CompilerElse
			If Valeur() = 10 ; Saut de ligne
				ValeurCryptee() = #crlf$
			Else
				ValeurCryptee() = Hex(Valeur() ! Cle)
			EndIf
		CompilerEndIf
		
	Next
	
	Debut = 1
	While ListSize(ValeurCryptee())
		If Debut
			FirstElement(ValeurCryptee())
		Else
			LastElement(ValeurCryptee())
		EndIf
		Cryptage + ValeurCryptee()
		DeleteElement(ValeurCryptee())
		Debut = 1 - Debut
	Wend
	
	ProcedureReturn Cryptage
EndProcedure
Procedure.s DecrypText(Texte.s, Cle.l = 174)
	Protected Table.s
	Table = "0123456789ABCDEF"
	Table + "GHWJKLMNXPQRSTUV"
	Protected NewList Valeur.l()
	Protected NewList ValeurCryptee.s()
	Protected Decryptage.s
	; Mise en forme des sauts de ligne
	Texte = ReplaceString(Texte, #crlf$, Chr(10))
	Texte = ReplaceString(Texte, Chr(13), Chr(10))
	Texte = ReplaceString(Texte, Chr(10), #crlf$)
	
	
	Texte_Longueur = Len(Texte)
	For Index = 1 To Texte_Longueur Step 2
		Debut = Int((ListSize(ValeurCryptee()) + 1) / 2) - 1
		If Debut >= 0
			SelectElement(ValeurCryptee(), Debut)
		EndIf
		AddElement(ValeurCryptee())
		ValeurCryptee() = Mid(Texte, Index, 2)
	Next
	
	ForEach ValeurCryptee()
		If ValeurCryptee() = #crlf$
			AddElement(Valeur())
			Valeur() = 10
			CompilerIf #PB_Compiler_Unicode
				AddElement(Valeur())
				Valeur() = 0
			CompilerEndIf
		Else
			CompilerIf #PB_Compiler_Unicode
				Valeur_Suivante = -1
				Debut = FindString(Table, Left(ValeurCryptee(), 1))
				If Debut > 16
					ValeurCryptee() = Mid(Table, FindString(Table, Left(ValeurCryptee(), 1)) - 16, 1) + Right(ValeurCryptee(), 1)
					Valeur_Suivante = 0
				EndIf
			CompilerEndIf
			AddElement(Valeur())
			Valeur() = Val("$" + ValeurCryptee()) ! Cle
			CompilerIf #PB_Compiler_Unicode
				If Valeur_Suivante >= 0
					AddElement(Valeur())
					Valeur() = 0
				EndIf
			CompilerEndIf
		EndIf
	Next
	
	CompilerIf #PB_Compiler_Unicode
		Decryptage = Space(ListSize(Valeur()) / 2)
	CompilerElse
		Decryptage = Space(ListSize(Valeur()))
	CompilerEndIf
	ForEach Valeur()
		PokeB(@Decryptage + ListIndex(Valeur()), Valeur())
	Next
	Decryptage = ReplaceString(Decryptage, Chr(10), #crlf$)
	
	ProcedureReturn Decryptage
EndProcedure

Debug Texte
Texte = CrypText(Texte)
Debug Texte
If CreateFile(0, "Temp.txt")
	WriteString(0, Texte)
	CloseFile(0)
	RunProgram("Temp.txt")
	Delay(1000)
	DeleteFile("Temp.txt")
EndIf

Texte = DecrypText(Texte)
Debug Texte
If CreateFile(0, "Temp2.txt")
	WriteString(0, Texte)
	CloseFile(0)
	RunProgram("Temp2.txt")
	Delay(1000)
	DeleteFile("Temp2.txt")
EndIf


Re: Crypter un texte

Publié : jeu. 12/janv./2012 12:34
par Kwai chang caine
Merci SOLDAT du partage 8)

C'est vrai...pour un musicien, il est drolement fort ce DOBRO :mrgreen: , il m'epate de temps en temps 8O

@SPH
Merci beaucoup de ta reponse 8)

Edit :
Je viens de lancer ton super code..
Moi aussi j't'adore, ainsi que tous les copains....et j'ai pas besoin de Crypteur/Decrypteur pour te le dire :D
Remarque ça tombe bien..j'aurais pas su le faire :lol:
Encore merci 8)

Re: Crypter un texte

Publié : jeu. 12/janv./2012 14:55
par Backup
:)
j'ai continué a chercher un peu ..

voici le prg pour décoder le mode "unicode" pré_crypté :)

a lancer en mode normal (non unicode)

et puisqu'on sait que la phrase commence par "B" , on fait rechercher directement la clef par le prg :)

ps [reedit]
ce code décode les 2 type de phrases et trouve la clef (du moment que la phrase commence par Bonjour ;) )

Code : Tout sélectionner

; ************** decommenter la phrase a décoder ******************************************
;code$="EC8FC18EC0CBC4DCC1C1DBCADCCF8E8EC2DDCBDBDDC18ED8CF8EC3CBC7C4DD82"
code$="UCXFS1XES0SBS4TCS1S1TBSATCSFXEXES2TDSBTBTDS1XET8SFXES3SBS7S4TDX2"
; ***************************************************************************************

table$="GHWJKLMNXPQRSTUV"
; decode la phrase pré_crypté , avec les valeur Hexa Farfelues (mais bien trouvé )
for i=1 to len(table$)
	car$=mid(table$,i,1)
	code$=ReplaceString(code$,car$, hex(i-1) )
next i
; ******** retrouve la clef tout seul :o) ************
clef= val( "$"+mid(code$,1,2))  ! asc("B") ; on sait que ça commence par Bonjour ;o)

; ***********************************************

; *********** mise en tableau ************
dim tabl.s(0)
for i=1 to len(code$) step 2	
	tabl.s(b)="$"+mid(code$ ,i,2)
	b=b+1
	redim tabl.s(b)
	i=i+2
next i
; ***************************************


;for clef=1 to 255  ; a activer pour rechercher la clef si on ne la connais pas 
for i=1 to   ArraySize(tabl.s())
	sortie$=sortie$+chr( val(tabl.s(i-1)) ! clef)
next i
debug sortie$ + " clef :"+str(clef)
sortie$=""
debug ""
;next clef
calldebugger


;
; EPb



Re: Crypter un texte

Publié : jeu. 12/janv./2012 21:45
par Le Soldat Inconnu
Le seul HIC, c'est que tu ne décodes que la moitié de la phrase, vu que tu lis un caractère sur 2. le restant de la phrase est dans les autres caractères :)

Regarde bien :)

Code : Tout sélectionner

; ************** decommenter la phrase a décoder ******************************************
;code$="EC8FC18EC0CBC4DCC1C1DBCADCCF8E8EC2DDCBDBDDC18ED8CF8EC3CBC7C4DD82"
code$="UCXFS1XES0SBS4TCS1S1TBSATCSFXEXES2TDSBTBTDS1XET8SFXES3SBS7S4TDX2"
; ***************************************************************************************

table$="GHWJKLMNXPQRSTUV"
; decode la phrase pré_crypté , avec les valeur Hexa Farfelues (mais bien trouvé )
For i=1 To Len(table$)
		car$=Mid(table$,i,1)
		code$=ReplaceString(code$,car$, Hex(i-1) )
Next i
; ******** retrouve la clef tout seul :o) ************
clef= Val( "$"+Mid(code$,1,2))  ! Asc("B") ; on sait que ça commence par Bonjour ;o)

; ***********************************************

; *********** mise en tableau ************
Dim tabl.s(0)
For i=1 To Len(code$) Step 4
		tabl.s(b)="$"+Mid(code$ ,i,2)
		b=b+1
		Redim tabl.s(b)
	Next i
	For i=Len(code$) - 1 To 1 Step -4
		tabl.s(b)="$"+Mid(code$ ,i,2)
		b=b+1
		Redim tabl.s(b)
	Next i
; ***************************************


;for clef=1 to 255  ; a activer pour rechercher la clef si on ne la connais pas 
For i=1 To   ArraySize(tabl.s())
		sortie$=sortie$+Chr( Val(tabl.s(i-1)) ! clef)
Next i
Debug sortie$ + " clef :"+Str(clef)
sortie$=""
Debug ""
;next clef
CallDebugger


;
; EPb

Re: Crypter un texte

Publié : jeu. 12/janv./2012 21:53
par Cool Dji
Bravo Dobro !

Re: Crypter un texte

Publié : ven. 13/janv./2012 0:35
par Backup
Le Soldat Inconnu a écrit :Le seul HIC, c'est que tu ne décodes que la moitié de la phrase, vu que tu lis un caractère sur 2. le restant de la phrase est dans les autres caractères :)

Regarde bien :)
ha oui ! exacte :) arf! j’étais pas loin :)

Re: Crypter un texte

Publié : dim. 19/févr./2012 17:42
par nemerod256
moi j'ai qu'elle que chose 8)
un "Challenge Décrypto"
voila le message:
37 A7 9C 9E 34 70 3D 81 81 8F 66 70 3F CE D2 D8 76 29 62 9D 9B 96 35 6D 2C 9F CF D1 32 3C F5 17 8B 48 F7 61 60 8C 96 9D 33 EA
petit indice :)
tous l’algorithme et en ASCII
trouvé ma méthode (pour les plus courageux (humour))

tous a été faire avec PB
la clef et non random(xxx)
mais il y a 1 clef
pas la pure aléatoire
mais le message

en 32 ligne de code
attention au plantage neuronale