Codage Random Simple

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Codage Random Simple

Message par Zorro »

le principe est simple, et permet d'encoder une chaine de caracteres ou un texte complet
(mais pas du binaire )

utile pour echanger avec un tiers de façon relativement sécurisé ...
c'est pas du codage resistant a la NSA , mais ça le fait bien
pour par exemple embrouiller un email .. :)

le principe est simple, et repose sur RandomSEED(X)
chaque randomseed initie une liste de chiffres aléatoire , je me sert
du fait qu'une liste randomseed(x) sera toujours la meme !
ensuite j'utilise les membres de cette liste pour encoder chaque caracteres du text

le decodage, procede de la meme maniere ...

seulement les caracteres inclus dans l'alphabet seront traité . .

si vous encodez avec le parametre "de" egale a 10 , il faudra obligatoirement remettre 10
pour le decodage ....

si vous voulez compliquer le codage, il suffit de Surencoder , mais il faudra procéder au mouvement inverse pour decoder

exemple :

Code : Tout sélectionner



Text.s="il était une bergère !" ; <<<<<<<<< Texte a traiter
Debug Text.s

; on encode
code.s= R_encode(text.s,10)
debug  "Texte encodé Random "+Code.s 

; on Sur-encode
code.s= R_encode(code.s,1)
debug  "Texte sur_encodé Random "+Code.s 

; on decode le sur encodage
code.s= R_decode(Code.s ,1)
debug "Texte surdécodé Random "+Code.s 

; on decode vraiment le dernier encodage

code.s= R_decode(Code.s ,10)
debug "Texte décodé Random "+Code.s 




voici le source :

Code : Tout sélectionner

;***********************************************
;Titre  :*Random_encode_decode
;Auteur  : Zorro
;Date  :11/12/2017
;Heure  :12:08:00
;Version Purebasic :  PureBasic 5.60 (Windows - x86)
;Version de l'editeur :EPB V2.68
; Libairies necessaire : Aucune 
;***********************************************


Declare.s R_encode(text.s,de)
Declare.s R_decode(text.s,de)




Text.s="il était une bergère !" ; <<<<<<<<< Texte a traiter
Debug Text.s

; on encode
code.s= R_encode(text.s,10)
debug  "Texte encodé Random "+Code.s 

; on decode
code.s= R_decode(Code.s ,10)
debug "Texte décodé Random "+Code.s 



Procedure.s R_encode(text.s,De)
		; By Zorro
		Protected Code.s,Extrait.s,Alphabet.s,Pointeur
		RandomSeed(De)
		Alphabet.s="abcdefghijklmnopqrstuvwxyz0123456789àéèêû ,;/:!¨^$'()-+\_ç&ù§[]=><*#{}@|~"		
		For i=1 to Len(text.s)			
				Extrait.s=mid(text.s,i,1)
				position=FindString(Alphabet.s,Extrait.s)
				de=Random(42,1)
				pointeur=de+position
				If pointeur>Len(Alphabet.s) :pointeur=pointeur-Len(Alphabet.s) :Endif				
				Code.s=Code.s+mid(Alphabet.s,pointeur,1)				
		Next i
		ProcedureReturn Code.s
EndProcedure
;
Procedure.s R_decode(text.s,De)
		; By Zorro
		Protected Code.s,Extrait.s,Alphabet.s,Pointeur
		RandomSeed(De)
		Alphabet.s="abcdefghijklmnopqrstuvwxyz0123456789àéèêû ,;/:!¨^$'()-+\_ç&ù§[]=><*#{}@|~"		
		For i=1 to Len(text.s)			
				Extrait.s=mid(text.s,i,1)
				position=FindString(Alphabet.s,Extrait.s)
				de=Random(42,1)
				pointeur=position-de
				If pointeur<1 :pointeur=pointeur+Len(Alphabet.s) :Endif
				
				Code.s=Code.s+mid(Alphabet.s,pointeur,1)				
		Next i
		ProcedureReturn Code.s
EndProcedure



Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Codage Random Simple

Message par Micoute »

Merci beaucoup Zorro, c'est un code semblable que je cherchais pour coder mes notes. J'adore et j'adopte.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre