Criptarea textului într-un fișier ini

Criptarea textului într-un fișier ini

Parolele mele sunt scrise în fișierul ini, dar problema este că ele nu sunt criptate deloc. Spuneți-mi ce algoritm pot fi criptați și, în viitor, ar trebui să fie decriptați, astfel încât programul să funcționeze cu ei?
P.S. Sunt nou în acest domeniu, de aceea, dacă nu este greu pentru dvs. - explicați cât mai ușor posibil.

Dacă scrieți un hash, nu o parolă, atunci nu este nevoie să-l decriptați, dar nu puteți restaura parola dacă îl uitați. Și dacă criptați, atunci algoritmii - începând cu xor "a, pentru un începător ceva mai complicat este mai bine și nu atingeți, imho)

Puteți vedea cel puțin un exemplu de utilizare a unui hash sau xor pentru a înțelege semnificația lucrării.


const
# xA0; csCryptFirst = 20;
# xA0; csCryptSecond = 230;
# xA0; csCryptHeader = "";

tip
# xA0; ECryptError = clasă (excepție);

funcția CryptString (Str: String): String;
var i, membru. integer;
începe
# xA0; clen: = Lungime (csCryptHeader);
#XA0; SetLength (Rezultat, Lungime (Str) + număr);
# xA0; Mutare (csCryptHeader [1], Rezultat [1], Membru);
# xA0; Pentru i: = 1 până la Lungime (Str) face
# xA0; începe
# xA0; # xA0; dacă i mod 2 = 0 atunci
# xA0; # xA0; Rezultat [i + clen]: = Chr (Ord (Str [i]) xor csCryptFirst)
# xA0; # xA0; altceva
# xA0; # xA0; Rezultat [i + clen]: = Chr (Ord (Str [i]) x sau csCryptSecond);
# xA0; se încheie;
se încheie;

# xA0; pentru i: = 1 până la Lungime (Str) -clen
# xA0; începe
# xA0; # xA0; dacă (i) mod 2 = 0 atunci
# xA0; # xA0; Rezultat [i]: = Chr (Ord (Str [i + clen]) xor csCryptFirst)
# xA0; # xA0; altceva
# xA0; # xA0; Rezultat [i]: = Chr (Ord (Str [i + clen])) sauCsCryptSecond);
# xA0; se încheie;
se încheie;

procedura TForm1.Button1Click (expeditor: TObject);
începe
caption: = (CryptString ("agent FBI")));
se încheie;

procedura TForm1.Button2Click (expeditor: TObject);
începe
caption: = (UnCryptString (caption));
se încheie;

Puteți, de exemplu,
N: = 0
.
N: = N + Ord (S [I]);

N este un hash (semnătura, semnătura) pentru nimic, ți-ai ales calea.


> în viitor ar trebui să fie decriptate în scopul de a
> programul ar putea lucra cu ei?

da

pentru că este xor)

nu în curs - a luat doar un exemplu gata făcut de mine

Iată intrarea parolei în fișierul criptat:
Ini: = TiniFile.Create (extrafilepath (paramstr (0)) + "Settings.ini");
Ini.WriteString ("Pass", "primul (1)", (CryptString (Edit1.Text))));

Dar verificați-l pentru corectitudine cu decriptarea preliminară:
dacă (Edit1.Text = UnCryptString (Ini.ReadString ("Pass", "first (1)", "1111"))))

Se pare că a făcut totul bine, dar nimic nu funcționează, parola este criptată în mod normal, dar când încerc să o introduc, el scrie că parola nu este corectă :(

procedura TForm1.Button1Click (expeditor: TObject);
var ini: TIniFile;
începe

ini: = TIniFile.Create (Application.ExeName + ".ini");
ini.WriteString ("trece", "1", CryptString (Edit1.Text));
se încheie;

procedura TForm1.Button2Click (expeditor: TObject);
var ini: TIniFile;
începe
ini: = TIniFile.Create (Application.ExeName + ".ini");
dacă UnCryptString (ini.ReadString ("pass", "1", CryptString (Edit1.Text))) = Edit1.Text atunci
ShowMessage ("OK");

dar funcționează pentru mine

oh, îmi pare rău, m-am gândit că în "Altele", mă așez, scoateți posturile mele

cea mai simplă versiune:
chiar dacă tastați automat parola, aspectul este schimbat în latină, iar parola este afișată cu asteriscuri. Este ideea clară?

Această funcție are nevoie de o linie pentru a fi criptată și o linie - o cheie.
Returnează criptatul. Utilizarea repetată decriptează șirul. Doar pentru a se potrivi inishek.
funcția XorStr (const Str, KeyStr: String): String;
var
Ln1, Ln, i, n: Integer;
# xA0; b: Byte;
începe
Dacă Str = "" atunci
# xA0; începeți
# xA0; Rezultat: = "";
# xA0; ieșire;
# xA0; sfârșitul;
Dacă KeyStr = "" atunci
# xA0; începeți
# xA0; Rezultat: = Str;
# xA0; Ieșire;
# xA0; sfârșitul;

Ln: = Lungimea (Str);
Ln1: = Lungime (KeyStr);
SetLength (Rezultat, Ln);
pentru i: = 1 la Ln
# xA0; începeți
# xA0; n: = i mod Ln1;
# xA0; Dacă n = 0 atunci n: = Ln1;
# xA0; b: = octet (Str [i]) xor octet (KeyStr [n]);
# xA0; Rezultat [i]: = Char (b);
# xA0; sfârșitul;
se încheie;

clasă inițială criptată ini

Memorie: 0,76 MB
Timp: 0,045 sec

Articole similare