Encriptage

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
brossden
Messages : 818
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Bonjour

J'utilise un système de cryptage simple mais qui reste bien suffisant dans la plus part des cas :

Code : Tout sélectionner


Global res.s
Procedure encode(txt.s, cle.s)
  res.s=""
  clefs.s=""
  For n=0 To Len(txt)/Len(cle)
    clefs.s + cle
  Next
  clefs=Right(clefs,Len(txt))
  For n= 1 To Len(txt)
    x=Asc(Mid(txt,n,1))-Asc(Mid(clefs,n,1))

    If x<1 :x+255:EndIf
  xx.s + Str(x)+" "
    res + Chr(x)
  Next
EndProcedure

Procedure decode(txt.s,cle.s)
  res.s=""
  clefs.s=""
  For n=0 To Len(txt)/Len(cle)
    clefs.s + cle
  Next
  clefs=Right(clefs,Len(txt))
  For n= 1 To Len(txt)
    x=Asc(Mid(txt,n,1))+Asc(Mid(clefs,n,1))
    If x>256 :x-255:EndIf
    res + Chr(x)
  Next
EndProcedure


clef.s = ProgramParameter()
If clef="" : clef="Secret" : EndIf
texte.s="122  Ceci est un teste d'encodage"


encode(texte,clef);encod
Debug res

decode(res,clef);encod
Debug res

Il est possible de passer en paramètre une clé d'encryptage, mais par défaut ici elle est "Secret".
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

je viens de coder un truc assez complet mais sans algo perso, juste avec la commande DESFingerprint()

voir sur ce meme forum :

http://purebasic.hmt-forum.com/viewtopi ... 5f1b9#5423
Image
le_pro_du_pure
Messages : 19
Inscription : mar. 13/avr./2004 9:10
Localisation : Si je ne suis ici, alors, je suis ailleurs.

Message par le_pro_du_pure »

j'ai pas mon ordi a disposition :cry:
donc le ne peux pas vous passer la source :?
je verrai ca + tard 8)
a+
Si les gens pensaient la moitié de ce qu'ils disent, et qu'ils disaient la moitié de ce qu'ils pensent, ils diraient moins de conneries.
le_pro_du_pure
Messages : 19
Inscription : mar. 13/avr./2004 9:10
Localisation : Si je ne suis ici, alors, je suis ailleurs.

Message par le_pro_du_pure »

voila le code comme promis :painting:
en fair il est intégré a un client mails 8)

Code : Tout sélectionner

Procedure.s codec(deb.s, fin.s, ent.s)
  OpenPreferences("cle1.mdp")
  cle1.s = ReadPreferenceString(deb, "")
  cle2.s = ReadPreferenceString(fin, "")
  ClosePreferences()
  sor.s = ""
  For a = 1 To Len(ent)
    car.s = Mid(ent, a, 1)
    pos = FindString(cle1, car, 1)
    dec.s = Mid(cle2, pos, 1)
    sor = sor + dec
  Next
  ProcedureReturn sor.s
EndProcedure

Procedure.s recu(id)
  mem = AllocateMemory(1000)
  FreeMemory(mem)
  ReceiveNetworkData(id, mem, 1000)
  reponse.s = PeekS(mem, 1000)
  ProcedureReturn reponse.s
EndProcedure

OpenPreferences("mail.prefs")
log.s = ReadPreferenceString("log", "")
mdp.s = ReadPreferenceString("mdp", "")
serv.s = ReadPreferenceString("serv", "")
ClosePreferences()

mdp1.s = codec("cle1", "cle2", mdp)

OpenWindow(fen, 10, 10, 90, 26, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Serveur")
CreateGadgetList(WindowID())
StringGadget(2, 2, 2, 86, 22, serv)
Repeat
  serv.s = GetGadgetText(2)
Until WaitWindowEvent() = #PB_Event_CloseWindow
CloseWindow(fen)
OpenWindow(fen, 10, 10, 90, 26, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Loggin")
CreateGadgetList(WindowID())
StringGadget(0, 2, 2, 86, 22, log)
Repeat
  user.s = GetGadgetText(0)
Until WaitWindowEvent() = #PB_Event_CloseWindow
CloseWindow(fen)
OpenWindow(fen, 10, 10, 90, 26, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "MDP")
CreateGadgetList(WindowID())
StringGadget(1, 2, 2, 86, 22, mdp1, #PB_String_Password)
Repeat
  pass.s = GetGadgetText(1)
Until WaitWindowEvent() = #PB_Event_CloseWindow
CloseWindow(fen)

pass1.s = codec("cle2", "cle1", pass)

CreatePreferences("mail.prefs")
WritePreferenceString("log", user)
WritePreferenceString("mdp", pass1)
WritePreferenceString("serv", serv)
ClosePreferences()

InitNetwork()

fdl.s = Chr(13) + Chr(10)
id = OpenNetworkConnection(serv, 110)

reponse.s = recu(id)
MessageRequester("Début", reponse.s, 0)

SendNetworkString(id, "USER " + user + fdl)
SendNetworkString(id, "PASS " + pass + fdl)

reponse.s = recu(id)

SendNetworkString(id, "STAT" + fdl)
recu(id)
reponse.s = recu(id)
MessageRequester("Liste", reponse.s, 0)

b.s = RemoveString(reponse, "+OK ")
b.s = StringField(b, 1, " ")

For a = 1 To Val(b)
  SendNetworkString(id, "TOP " + Str(a) + " 0" + fdl)
  ReceiveNetworkData(id, mem, 1000)
  reponse.s = recu(id)
  MessageRequester("Message " + Str(a), reponse.s, 0)
Next

MessageRequester("Message ", "Il n'y a pas ou plus de messages.", 0)

SendNetworkString(id, "QUIT" + fdl)

reponse.s = recu(id)
MessageRequester("Connection terminée", reponse, 0)
voila c 1 peu le bordel :0:
mais quoi ...:
Si les gens pensaient la moitié de ce qu'ils disent, et qu'ils disaient la moitié de ce qu'ils pensent, ils diraient moins de conneries.
le_pro_du_pure
Messages : 19
Inscription : mar. 13/avr./2004 9:10
Localisation : Si je ne suis ici, alors, je suis ailleurs.

Message par le_pro_du_pure »

au fait, j'oublie tjs :cry:
il faut un fichier comme ca :

Code : Tout sélectionner

cle1 = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ9876543210
cle2 = aqwZSXedcRFVtgbYHNujIKolPM741AQWzsxEDCrfvTGB852yhnUJik963OLp0m
nommé "cle1.mdp" avec en clé "cle1" les lettres de depart er en "cle2" les lettres d'arrivées.
Par exemple, si le mot de passe est "b" :
  • 1 il cherche la position de la lettre "b" ds la cle1
    2 il cherche la lettre ayant la meme pos ds la cle2
il code le tt selon le meme principe.
Si les gens pensaient la moitié de ce qu'ils disent, et qu'ils disaient la moitié de ce qu'ils pensent, ils diraient moins de conneries.
le_pro_du_pure
Messages : 19
Inscription : mar. 13/avr./2004 9:10
Localisation : Si je ne suis ici, alors, je suis ailleurs.

Message par le_pro_du_pure »

décidément, j'oublie plein de trucs :oops:
bien sur vous pouves changer les clefs, a condition qu'il n'y ait pas 2 fois les memes lettres dedans
il faut aussi que le fichier soit ds le meme répertoire
mais faudrait surtout pas croire que je vous prend pour des imbéciles, c juste pour prévenir...
Si les gens pensaient la moitié de ce qu'ils disent, et qu'ils disaient la moitié de ce qu'ils pensent, ils diraient moins de conneries.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ben tu a un bouton "editer" a droite de tes message lorsque tu veut modifier un de tes écrits apres coup ! :)
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

sur Purearea il y a plusieures exemples
le_pro_du_pure
Messages : 19
Inscription : mar. 13/avr./2004 9:10
Localisation : Si je ne suis ici, alors, je suis ailleurs.

Message par le_pro_du_pure »

Une autre question : comment génerer une nouvelle table à chaque démarage de l'application ? :)
Comme je suis un peu fainéant par nature (comme chacun de nous), je n'ai pas encore trouvé une solution ne dépassant pas le nombre de ligne suffisant à foutre le bordel dans la source :lol:
Si les gens pensaient la moitié de ce qu'ils disent, et qu'ils disaient la moitié de ce qu'ils pensent, ils diraient moins de conneries.
Répondre