4

ABAP でテキスト ファイルの MD5 ハッシュを生成したいと考えています。非常に大きなファイル用に生成するための標準的なソリューションは見つかりませんでした。汎用モジュールCALCULATE_HASH_FOR_CHARは入力パラメーターとして文字列を受け取るため、要件を満たしていません。小さいファイルでは機能しますが、たとえば 4 GB のファイルの場合、そのような大きな文字列を作成することはできません。

それを行うための標準的なコーディングがあるかどうかを知っている人はいますか (私のグーグルの努力では何ももたらされませんでした)、または誰かがファイルのハッシュを計算する ABAP の MD5 アルゴリズムを持っているのでしょうか?

4

3 に答える 3

6

ABAP言語では計算中の算術オーバーフローが許可されていないため、このアルゴリズムの実装は不可能のようです。これは、なぜこれまで SAP システムに実装されていないのかという疑問にも答えるはずです。いずれにせよ、外部ツールを呼び出す方法は他にないように見えますが、残念ながら、プラットフォームに依存することはほとんどありません。

編集:わかりました!そこで、René とFast MD5 Implementation in Javaのコードの多大な助けを借りて、ABAP で MD5 アルゴリズムの実装を作成しました。この実装により、計算されたハッシュをより多くのバイトで更新できますが、もちろん異なるソースからのものである可能性があります。

これまでのところファイルを取得する方法はありませんが、とにかくほとんどの作業は完了しています。

コードにはいくつかの単純な ABAP 単体テストが含まれており、その使用方法も文書化されています。

于 2012-07-18T17:42:42.700 に答える
2

おそらく、数メガバイトのデータ ブロックでファイルを読み取り、提案された関数を使用してそれらのハッシュ リストを作成することができます。次に、生成されたハッシュ リストを使用して単一のトップ ハッシュを作成します。

于 2012-07-13T08:30:31.543 に答える
1

SDN は通常、ABAP 関連のソリューションを見つけるための非常に良い出発点です。この投稿を見つけることができました: http://scn.sap.com/thread/1483479

著者は次のように提案しています。

  • .txt ファイルをアップロードしますが、BIN としてアップロードします。
  • 関数 MD5_CALCULATE_HASH_FOR_RAW を使用してハッシュ コードを計算します。

ファイルをバイナリ形式で取得して使用できますMD5_CALCULATE_HASH_FOR_RAWか?

CALCULATE_HASH_FOR_RAW編集:この投稿には、 http://scn.sap.com/thread/1298723を使用したより詳細な回答もあります。

Shivanand Kalagi の回答の引用:

STR_LEN = XSTRLEN( DATA ).

CALL FUNCTION 'CALCULATE_HASH_FOR_RAW'
  EXPORTING
    ALG            = 'MD5'
    DATA           = DATA
    LENGTH         = STR_LEN
  IMPORTING
    HASH           = L_MD5_HASH.
于 2012-07-11T07:59:59.027 に答える