![]() |
Re: sha1 verschlüsslung und jedi ?
Zitat:
Delphi-Quellcode:
Eine Zeile genügt dann.
Result_String_as_HEX := THash_SHA1.CalcBinary(Dein_String_hier, TFormat_HEX);
Gruß Hagen |
Re: sha1 verschlüsslung und jedi ?
dachte ich könnte diese function irgendwie umschreiben , so dass ich diesen hash string bekomme ?
Delphi-Quellcode:
aber ich bekomme nichts zurück
function SHA1SelfTest2(s:String): string;
const //s: string= 'abc'; OutDigest: TSHA1Digest= ($a9,$99,$3e,$36,$47,$06,$81,$6a,$ba,$3e,$25,$71,$78,$50,$c2,$6c,$9c,$d0,$d8,$9d); var Context: TSHA1Context; Digest: TSHA1Digest; begin SHA1Init(Context); SHA1Update(Context,@s[1],length(s)); SHA1Final(Context,Digest); if CompareMem(@Digest,@OutDigest,Sizeof(Digest)) then //Result:= true ; else //Result:= false; end; |
Re: sha1 verschlüsslung und jedi ?
Zitat:
Du weist der Variable Result nichts zu. ;) Grüße Faux |
Re: sha1 verschlüsslung und jedi ?
;) ja du hast recht :) ..aber was muss ich da zurück geben ? ich steh grade echt aufm schlauch ...1000 dank
|
Re: sha1 verschlüsslung und jedi ?
Ich bin mir nicht sicher, aber ich tippe mal, dass du Digest irgendwie zurückgeben musst (mit irgendwie meine ich, dass du es als String zurückgeben müsstest). Die Konstante OutDigest brauchst du imho auch nicht, da diese nur dazu da ist, um den Vergleich in Zeile 13 durchzuführen (welchen du auch nicht brauchst).
Grüße Faux |
Re: sha1 verschlüsslung und jedi ?
hmm ..damn ...okay ich versuch nochmal weiter danke dir
|
Re: sha1 verschlüsslung und jedi ?
hey ich dreh gleich ab mit dem zeugs ich krieg das einfach nicht hin
erbitte hilfe |
Re: sha1 verschlüsslung und jedi ?
Zitat:
|
Re: sha1 verschlüsslung und jedi ?
ich poste mal die ganze unit. 1000 dank für deine hilfe
Delphi-Quellcode:
unit SHA1;
interface uses Sysutils, Tools; type TSHA1Digest= array[0..19] of byte; TSHA1Context= record Hash: array[0..4] of DWord; Hi, Lo: integer; Buffer: array[0..63] of byte; Index: integer; end; function SHA1SelfTest: boolean; procedure SHA1Init(var Context: TSHA1Context); procedure SHA1Update(var Context: TSHA1Context; Buffer: pointer; Len: integer); procedure SHA1Final(var Context: TSHA1Context; var Digest: TSHA1Digest); //****************************************************************************** implementation {$R-} function SHA1SelfTest: boolean; const s: string= 'abc'; OutDigest: TSHA1Digest= ($a9,$99,$3e,$36,$47,$06,$81,$6a,$ba,$3e,$25,$71,$78,$50,$c2,$6c,$9c,$d0,$d8,$9d); var Context: TSHA1Context; Digest: TSHA1Digest; begin SHA1Init(Context); SHA1Update(Context,@s[1],length(s)); SHA1Final(Context,Digest); if CompareMem(@Digest,@OutDigest,Sizeof(Digest)) then Result:= true else Result:= false; end; //****************************************************************************** function F1(x, y, z: DWord): DWord; begin Result:= z xor (x and (y xor z)); end; function F2(x, y, z: DWord): DWord; begin Result:= x xor y xor z; end; function F3(x, y, z: DWord): DWord; begin Result:= (x and y) or (z and (x or y)); end; //****************************************************************************** function RB(A: DWord): DWord; begin Result:= (A shr 24) or ((A shr 8) and $FF00) or ((A shl 8) and $FF0000) or (A shl 24); end; procedure SHA1Compress(var Data: TSHA1Context); var A, B, C, D, E, T: DWord; W: array[0..79] of DWord; i: integer; begin Move(Data.Buffer,W,Sizeof(Data.Buffer)); for i:= 0 to 15 do W[i]:= RB(W[i]); for i:= 16 to 79 do W[i]:= LRot32(W[i-3] xor W[i-8] xor W[i-14] xor W[i-16],1); A:= Data.Hash[0]; B:= Data.Hash[1]; C:= Data.Hash[2]; D:= Data.Hash[3]; E:= Data.Hash[4]; for i:= 0 to 19 do begin T:= LRot32(A,5) + F1(B,C,D) + E + W[i] + $5A827999; E:= D; D:= C; C:= LRot32(B,30); B:= A; A:= T; end; for i:= 20 to 39 do begin T:= LRot32(A,5) + F2(B,C,D) + E + W[i] + $6ED9EBA1; E:= D; D:= C; C:= LRot32(B,30); B:= A; A:= T; end; for i:= 40 to 59 do begin T:= LRot32(A,5) + F3(B,C,D) + E + W[i] + $8F1BBCDC; E:= D; D:= C; C:= LRot32(B,30); B:= A; A:= T; end; for i:= 60 to 79 do begin T:= LRot32(A,5) + F2(B,C,D) + E + W[i] + $CA62C1D6; E:= D; D:= C; C:= LRot32(B,30); B:= A; A:= T; end; Data.Hash[0]:= Data.Hash[0] + A; Data.Hash[1]:= Data.Hash[1] + B; Data.Hash[2]:= Data.Hash[2] + C; Data.Hash[3]:= Data.Hash[3] + D; Data.Hash[4]:= Data.Hash[4] + E; FillChar(W,Sizeof(W),0); FillChar(Data.Buffer,Sizeof(Data.Buffer),0); end; //****************************************************************************** procedure SHA1Init(var Context: TSHA1Context); begin Context.Hi:= 0; Context.Lo:= 0; Context.Index:= 0; FillChar(Context.Buffer,Sizeof(Context.Buffer),0); Context.Hash[0]:= $67452301; Context.Hash[1]:= $EFCDAB89; Context.Hash[2]:= $98BADCFE; Context.Hash[3]:= $10325476; Context.Hash[4]:= $C3D2E1F0; end; //****************************************************************************** procedure SHA1UpdateLen(var Context: TSHA1Context; Len: integer); var i, k: integer; begin for k:= 0 to 7 do begin i:= Context.Lo; Inc(Context.Lo,Len); if Context.Lo< i then Inc(Context.Hi); end; end; //****************************************************************************** procedure SHA1Update(var Context: TSHA1Context; Buffer: pointer; Len: integer); type PByte= ^Byte; begin SHA1UpdateLen(Context,Len); while Len> 0 do begin Context.Buffer[Context.Index]:= PByte(Buffer)^; Inc(PByte(Buffer)); Inc(Context.Index); Dec(Len); if Context.Index= 64 then begin Context.Index:= 0; SHA1Compress(Context); end; end; end; //****************************************************************************** procedure SHA1Final(var Context: TSHA1Context; var Digest: TSHA1Digest); type PDWord= ^DWord; begin Context.Buffer[Context.Index]:= $80; if Context.Index>= 56 then SHA1Compress(Context); PDWord(@Context.Buffer[56])^:= RB(Context.Hi); PDWord(@Context.Buffer[60])^:= RB(Context.Lo); SHA1Compress(Context); Context.Hash[0]:= RB(Context.Hash[0]); Context.Hash[1]:= RB(Context.Hash[1]); Context.Hash[2]:= RB(Context.Hash[2]); Context.Hash[3]:= RB(Context.Hash[3]); Context.Hash[4]:= RB(Context.Hash[4]); Move(Context.Hash,Digest,Sizeof(Digest)); FillChar(Context,Sizeof(Context),0); end; end. |
Re: sha1 verschlüsslung und jedi ?
Hallo Peter,
musst Du die Jedis einsetzen? Hier eine Alternative: ![]() Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz