2016-08-11 6 views
1

私はデルファイで書かれた以下のコードを持っています。デルファイのsha1チェックサム

with TIdHashMessageDigest5.Create do begin 
    st2.Position := 0; 
    Digest := HashValue(st2); 
    SetLength(Hash, 16); 
    Move(Digest, Hash[1], 16); 
    Free; 
end; 

SHA1ハッシュを使用するように変換する必要があります。私はライブラリにSHA1型が見つかりませんでした。誰も助けることができますか?私はインターネット上で助けを探しましたが、何も見つけることができませんでした。

+1

SHA1は、オフサイトのリンクしか含まない –

答えて

0

SHA1をサポートしていないIndy 9を使用します。インディ10にはSHA1(および他のいくつかの他のハッシュも含まれています)が追加されました。TIdHashのインターフェイスもIndy 10に書き直されました。その他の変更のなかで、HashValue()メソッドが新しいHash...()およびHash...AsHex()メソッドに置き換えられました(HashString(AsHex)HashStream(AsHex)HashBytes(AsHex))、例えば:

uses 
    ..., IdHash, IdHashMessageDigest; 

var 
    Hash: TIdBytes; 
begin 
    with TIdHashMessageDigest5.Create do 
    try 
    st2.Position := 0; 
    Hash := HashStream(st2); 
    finally 
    Free; 
    end; 
    // use Hash as needed... 
end;  

uses 
    ..., IdHash, IdHashSHA; 

var 
    Hash: TIdBytes; 
begin 
    with TIdHashSHA1.Create do 
    try 
    st2.Position := 0; 
    Hash := HashStream(st2); 
    finally 
    Free; 
    end; 
    // use Hash as needed... 
end;  
+0

こんにちはレミー、 お時間をいただきありがとうございます。私はそれを使用して、それがどのように私のために働くのか見る。私はDelphi 2005を使用しています。あなたが "宣言されていない識別子"エラーをたくさん生成しているものとしてIdGlobal.pasをどこから取得するのかをお勧めできますか? ?012のような@MKK、 – MKK

+0

?より新しいIdGlobal.pasを単独で入手するだけでは不十分です。Indyライブラリ全体全体をより新しいバージョンにする必要があります。 –

3

はこちらをご覧ください:

https://sergworks.wordpress.com/2014/10/25/high-performance-hash-library/

SHA1 hashing in Delphi XE

https://sourceforge.net/projects/sha1implementat/

http://www.colorfultyping.com/generating-a-sha-1-checksum-for-a-given-class-type/

はところで、あなたはDelphiのバージョンについては言及しませんでした。あなたは現代版(以降XE)を使用している場合、私はなど、その標準ライブラリは、MD5をSHA-1をサポートする必要があるとし

このようにあなたはそれを行うことができます:あなたがのように見える

uses IdHashSHA; 

function SHA1FromString(const AString: string): string; 
var 
    SHA1: TIdHashSHA1; 
begin 
    SHA1 := TIdHashSHA1.Create; 
    try 
    Result := SHA1.HashStringAsHex(AString); 
    finally 
    SHA1.Free; 
    end; 
end; 
+0

回答を確保されていない、ここで許容されていません。 –

0

つ以上のオプション:

http://www.spring4d.org

unit Spring.Cryptography.SHA; 

TSHA1 = class(THashAlgorithmBase, ISHA1) 

http://lockbox.seanbdurkin.id.au/HomePage

unit LbProc; 
procedure StreamHashSHA1(var Digest : TSHA1Digest; AStream : TStream); 
procedure FileHashSHA1(var Digest : TSHA1Digest; const AFileName : string);