![]() |
sha1 verschlüsslung und jedi ?
guten morgen leute, ich bin auf der suche nach einer sha1 verschlüsslung ...hat jedi so einen befehl dabei ?
danke für hilfe...sollte doch nur eine funktion sein oder nicht ? bzw kann mir einer sagen , was ich oben bei den uses statt tools nehmen muss ? ![]() |
Re: sha1 verschlüsslung und jedi ?
|
Re: sha1 verschlüsslung und jedi ?
lol, okay..danke
|
Re: sha1 verschlüsslung und jedi ?
weiss jetzt jemand noch, wie ich einen normalen string in dieses sha1 format bekomme ? also den aufruf ?
|
Re: sha1 verschlüsslung und jedi ?
Schau dir mal SHA1SelfTest an.
BTW. SHA ist keine Verschlüsselungs- sondern ein Hashverfahren. |
Re: sha1 verschlüsslung und jedi ?
kannst du mir schnell den unterschied erklären ..die von drüben (die phpler) haben nur gesagt das muss sha1 verschlüsselt sein und ich versteh hier überhaupt nichts...
|
Re: sha1 verschlüsslung und jedi ?
Ein Hash ist ein Einwegverfahren, d.h. nicht eineindeutig und deshalb nicht umkehrbar.
|
Re: sha1 verschlüsslung und jedi ?
achso, also wie zB md5 ? hey ich hock hier die ganze zeit dran , ich krieg es nicht hin einen einfachen string in dieses sha1 umzuwandeln ...kannste mir da nochmal helfen ?
|
Re: sha1 verschlüsslung und jedi ?
Ja, MD5 ist auch ein Hashverfahren. SHA-1, MD5, Whirlpool, RIPEMD-160, etc. das sind alles Hashverfahren.
Zitat:
Grüße Faux |
Re: sha1 verschlüsslung und jedi ?
Zitat:
Icj kenne die Funktion nicht, habe aber nur gesehen, daß die Testfunktion den String 'abc' hasht. Nachher müßte der Hash im Context stehen. Weitere Libraries: ![]() ![]() ![]() ![]() |
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 |
Re: sha1 verschlüsslung und jedi ?
lol, klaus..ich benutze die jedis nicht..-.ich will genau das benutzen wie du an der unit die ich gepostet habe siehst..
aber jetzt hab ich halt das problem das ich keinen string in diesen hash kriege... |
Re: sha1 verschlüsslung und jedi ?
Sollte in etwas so gehen:
Delphi-Quellcode:
Grüße
procedure TForm1.Button1Click(Sender: TObject);
var context: TSha1Context; Digest: TSHA1Digest; i:byte; begin edit2.text:=''; sha1init(context); sha1Update(context,@edit1.text[1],length(edit1.Text)); sha1Final(context,digest); // HexAusgabe: for i:=low(digest) to high(digest) do edit2.Text:=edit2.Text+IntToHex(digest[i],2); end; Klaus |
Re: sha1 verschlüsslung und jedi ?
sieht nicht schlecht aus werde ich mal abgleichen lassen !!! danke dir !
klaus, du bist der beste das geht 1a, noch nen lowercase davor und es ist mit den phpler kompatibel ! danke dir :)! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 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