Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - sha1 unit wie verwenden ?


MagicRain - Mi 08.08.12 17:38
Titel: sha1 unit wie verwenden ?
Hey ich würde gerne einen String mit SHA1 verschlüsseln doch leider habe ich keine Ahnung wie ich die Unit an wenden /kann/soll/muss...

Das ist die Sha1 unit scheint recht gut zu sein bloß wie kann ich jetzt da mit einen String hashen und in einem Edit ausgeben ?

http://www.koders.com/delphi/fid872E48EC7C07A22D798357AEC0BABAC9E52BD5AE.aspx

Bei MD5 geht das ja zb mit Edit2.text := StrMD5('Test')...Danke für hilfe!

MfG

Moderiert von user profile iconTh69: Code- durch URL-Tags ersetzt
Moderiert von user profile iconNarses: Topic aus Algorithmen, Optimierung und Assembler verschoben am Mi 08.08.2012 um 22:37


Narses - Mi 08.08.12 21:55

Moin!

user profile iconMagicRain hat folgendes geschrieben Zum zitierten Posting springen:
Das ist die Sha1 unit scheint recht gut zu sein
[...]
http://www.koders.com/delphi/fid872E48EC7C07A22D798357AEC0BABAC9E52BD5AE.aspx
Aha. :|
Compiler hat folgendes geschrieben:
[Warnung] SHA1.pas(98 ): Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[Warnung] SHA1.pas(103): Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[Warnung] SHA1.pas(122): Konstantenausdruck verletzt untere Grenzen
[Warnung] SHA1.pas(123): Konstantenausdruck verletzt untere Grenzen
[Warnung] SHA1.pas(125): Konstantenausdruck verletzt untere Grenzen
Gut sieht anders aus, finde ich. :nixweiss:

user profile iconMagicRain hat folgendes geschrieben Zum zitierten Posting springen:
ich würde gerne einen String mit SHA1 verschlüsseln doch leider habe ich keine Ahnung wie ich die Unit an wenden /kann/soll/muss...
Dazu fehlen ein paar Funktionen, die das Handling etwas vereinfachen. Ich habe mal das hier dazugetan:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
//******************************************************************************
// Create hex representation of given Digest
function SHA1Print(const Digest: TSHA1Digest): AnsiString;
  var
    i: Integer;
  const
    Digits: array[0..15of AnsiChar = '0123456789abcdef';
begin
  SetLength(Result, 40);
  for i := 0 to 19 do begin
    Result[i*2+1] := Digits[(Digest[i] shr 4and $F];
    Result[i*2+2] := Digits[Digest[i] and $F];
  end;
end;

//******************************************************************************
// Create digest of given Message
function SHA1String(const M: AnsiString): TSHA1Digest;
  var
    Context: TSHA1Context;
begin
  SHA1Init(Context);
  SHA1Update(Context, PAnsiChar(M), Length(M));
  SHA1Final(Context, Result);
end;

dann kannst du damit so arbeiten:


Delphi-Quelltext
1:
Edit2.Text := SHA1Print(SHA1String(Edit1.Text));                    
Unicode-Versionen sind nach Belieben selbst abzuleiten.

cu
Narses