Page 2 sur 2

Publié : mer. 28/avr./2004 13:24
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".

Publié : mer. 28/avr./2004 13:53
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

Publié : ven. 30/avr./2004 18:27
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+

Publié : sam. 01/mai/2004 12:38
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 ...:

Publié : sam. 01/mai/2004 12:46
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.

Publié : sam. 01/mai/2004 12:50
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...

Publié : sam. 01/mai/2004 16:09
par Backup
ben tu a un bouton "editer" a droite de tes message lorsque tu veut modifier un de tes écrits apres coup ! :)

Publié : sam. 01/mai/2004 18:16
par Oliv
sur Purearea il y a plusieures exemples

Publié : dim. 02/mai/2004 14:48
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: