Newsgroup: it.comp.lang.delphi
Titolo: criptare una stringa

Ho la necessità di criptare una stringa contenente: lettere, spazi, punti e
numeri. La stringa deve essere criptata e decriptata, secondo necessità del
programma......avete un idea di come deve essere fatto.....esiste un
algoritmo già fatto?
P.S.
Vorrei fare il tutto senza l'uso di componenti esterni (usando solo quelli
forniti da delphi 5)
Ciao e grazie
Gianni Giusti


Const
   C_Chiave= 'qualsiasi stringa sara' la chiave di criptazione';
Function Cripta(sPAssword : String): String;
var
   idx           : integer;
   KeyLen        : Integer;
   KeyPos        : Integer;
   offset        : Integer;
   dest          : string;
   SrcPos        : Integer;
   SrcAsc        : Integer;
   TmpSrcAsc     : Integer;
   cOffSet, cCar : char;
begin
   KeyLen := Length(C_Chiave);
   KeyPos := 0;
   SrcPos := 0;
   SrcAsc := 0;
   dest   := '';
   for SrcPos := 1 to Length(sPAssword) do
   begin
      SrcAsc :=(Ord(sPAssword[SrcPos]));
      if KeyPos < KeyLen then
         KeyPos := KeyPos + 1
      else
         KeyPos :=1;
      SrcAsc := SrcAsc + Ord(C_Chiave[KeyPos]);
      dest :=dest + FormatFloat('000',SrcAsc);
   end;
   result := Dest;
end;
Function DeCripta(sPAssword : String): String;
var
   idx           : integer;
   KeyLen        : Integer;
   KeyPos        : Integer;
   offset        : Integer;
   dest          : string;
   SrcPos        : Integer;
   SrcAsc        : Integer;
   TmpSrcAsc     : Integer;
   cOffSet, cCar : char;
begin
   Result := '';
   KeyLen := Length(C_Chiave);
   KeyPos := 0;
   SrcAsc := 0;
   dest    := '';
   SrcPos  := 1;
   while SrcPos <= Length(sPAssword) do
   begin
      TmpSrcAsc := StrToInt(copy(sPAssword,SrcPos,3));
      if KeyPos < KeyLen then
         KeyPos := KeyPos + 1
      else
         KeyPos := 1;
      TmpSrcAsc := TmpSrcAsc - Ord(C_Chiave[KeyPos]);
      dest      := dest + chr(TmpSrcAsc);
      SrcPos    := SrcPos + 3;
   end;
   Result:=Dest;
end;

Grazie 1000 Filippo
Ciao
Gianni Giusti

 Gianni Giusti
Andrea
P.S. Ti posso scrivere una funzioncina che ti cripta la stringa in modo che
NON possa essere decriptata.

> Perché la vuoi decriptare?
E' la password e il login per un accesso ftp.....
Quello che voglio fare č questo:
criptare login e password, salvarle su un file e distribuirlo col programma.
All'occorrenza il programma legge il file, si estrae il login e la password
e imposta le proprietą del componente per ftp........
.......secondo te questo sistema č un "colabrodo"? :-(
.....o per lo meno lo ritieni poco sicuro?
Questo criptare e decriptare una stringa con Delphi č, per me, una novitą e
cadere in grossi errori č un attimo (con conseguente hakeraggio del mio
sito)
Ciao e grazie per i suggerimenti
Gianni Giusti

 Gianni Giusti
Auguri, Antò.

 In questo modo la tua password non č mai in chiaro.
In entrambi i casi la pwd non e' in chiaro.
Crittare la stringa inserita e confrontarla con la password
crittata non assicura alcun grado di sicurezza in piu',
rispetto a decrittare la password e confrontarla con la
stringa inserita.  Le due strade sono perfettamente
equivalenti.
-- 
Posted from  [80.105.34.80] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 equivalenti.
bhe io non sono esperto delle materie (programmazione e sicurezza) ma 
tempo fa lessi un articolo, ora non ricordo se su CP o IO Programmo, che 
spiegava alcune tecniche, le più semplici, usate dagli hacker per crackare 
i programmi, da qui ne ho dedotto che il secondo metodo fosse più sicuro, 
almeno verso le tecniche di cui sopra. 
Auguri, Antò. 

 il tuo programma richiede di inserire una password,
No..... la password viene letta dal file, decriptata e inserita nelle
proprietą del componente FTP senza chiedere nulla all'operatore (l'operatore
non conosce il login e la password, proprio per questo sono criptate).
Secondo voi č un metodo sicuro o qualcuno potrebbe leggere il login e la
password (con qualche sistema o programmi esterni) durante la fase di
decritamento e assegnazione valori al componente?
Esistono programmi di "hakeraggio" che permettono di leggere le proprietą di
VCL in programmi compilati?
(ovviamente spero che entambe le risposte siano negative)
Chiedo scusa se non mi sono spiegato bene nel post precedente
(effettivamente rileggendolo, con la frase "secondo necessitą del
programma......" sono stato DECISAMENTE troppo vago)  :-)
Ciao
Gianni Giusti

e imposta le proprietą del componente per ftp........
percui il consiglio di Andrea non e' applicabile.
Buone Feste
seby

 equivalenti.
Ah, si?
Beh, se uno non decodifica la pwd nel programma, forse c'è qualche speranza
che un hacker non arrivi all'algorito di decodifica... non trovi?
Cmq non è applicabile per lo scopo del programma.
Andrea


Non gli serve, basta che monitorino il traffico TCP/IP in uscita sulla porta
remota 21 e leggano la pass, che viene mandata in chiaro al server FTP.
Per farla piu' semplice, gli basterebbe addirittura cambiare l'indirizzo del
server (che deve pur stare da qualche parte) con 127.0.0.1 e aprire un falso
server FTP in locale, si leggerebbero la pass senza fare fatica :P
Ciaotutti,
*

 server FTP in locale, si leggerebbero la pass senza fare fatica :P
.....porc..putt.....per lo meno adesso sņ che č inutile affannarsi troppo,
tanto se vogliono le intercettano comunque, indifferentemente da come č
fatto il programma :-(
Grazie a tutti e Buon Natale
Ciao
Gianni Giusti