1

私はDelphiXE2で独自のコンポーネントを作成していますが、主にC++Builderを使用しています。そのため、DelphiDCryptライブラリに関してサポートが必要です。

私の新しいコンポーネントには、文字列のsha256ハッシュ値を計算するメソッド(関数)が必要です。私はDCryptライブラリを知っていて、しばらくの間それを使用していますが、今回はSHA256ハッシュアルゴリズムを分離して新しいコンポーネントに追加する必要があります。

DCryptはSHA256をDCPsha256.pasに保存しましたが、私はDelphiにあまり熟練していないため、何をすべきかわかりません。TDCP_sha256をインストールする必要はありません。新しいコンポーネント内で、SHA256を計算できる必要があります。

アイデア?ありがとう。

4

2 に答える 2

4
  1. 1つ:しないでください。DCryptライブラリをurコンポーネントと一緒に配布し、ユーザーがそれをより新しいバージョンに更新できるようにすることをお勧めします。sha256がバグに変わったり、新しいDelphiバージョンと互換性がなくなったりした場合、どうしますか?DCryptを使用している場合は、新しいバージョンをダウンロードするだけです。あなたがそれを分離した場合-それからあなたはそれを自分で修正しなければなりません。Delphiと暗号数学の両方で十分なスキルがあり、将来的にsha256コードと新しいDelphiバージョンのすべての修正を常に行うことができますか?

  2. しかし、あなたが主張するなら-それからDelphiを並べて起動します。1つの開いているDCryptソースで、別の開いている新しい空のユニット。sha256生成プロシージャをDCryptから空のユニットにコピーし、コンパイルを試みます。Delphiは未知の識別子について教えてくれます。Dcrypt Delphiを調べて、それらの宣言を見つけてください。それらがDCpyptからのものである場合は、それらを新しいユニットに再度コピーします。それらがRTL/VCLからのものである場合は、ユニットを新しいユニットのUSESに追加します。そして、もう一度コンパイルしてみてください。すべての識別子がUSESによって解決されるか、DCryptからファイルにコピーされるまで、これを繰り返します。それがコンパイルされた後-いくつかのファイルを取り、DCryptとあなたの新しいライブラリによってハッシュを計算します-それらが異なる場合、それはあなたが何かを壊し、それを見つけて修正しなければならないことを意味します(あなたは十分な暗号数学の経験を持っていますね)。

私はSpring4Dshaコード用にWin64asm最適化を行い、そのすべてのコードは単体テストでカバーされていたので、最適化がうまくいかなかった場合は常に新しいものでした。それらの完全な証言の方針がなければ、私はそれを行うことができませんでした。

DCrypt、Lockbox3、Spring4D、またはその他の強力なライブラリを使用し、孤立しないようにすることを強くお勧めします。コミュニティと一緒にいて、あなたはあなた自身のために彼らの労働を使うことができます。分離-新しいバグや非互換性が発生するたびに、再実行する必要があります。

ライブラリからコードを抽出することはできません-なぜそのコードをXE4/5/6にアップグレードして、壊れていないことを証明できると思いますか?

于 2012-09-28T13:49:42.350 に答える
4

オブジェクトを手動で作成します。既存のユニットを使用し、DCPCrypt を変更しないでください。

オブジェクトの作成方法:

var
  x:TDCP_sha256;

begin
  x := TDCP_sha256.Create(nil);
  try 
     // do stuff, create hash, whatever.
  finally
    x.Free;
  end;
end;

フォームまたはデータ モジュールにドロップする場合を除き、使用するクラスへのアクセスを提供するためにパッケージをインストールする必要はありません。上記のコードのようなコードを記述した場合、何も変更する必要はありません。

于 2012-09-28T18:16:03.450 に答える