4

我想在 ABAP 中生成一个文本文件的 MD5 哈希。我还没有找到任何标准的解决方案来为一个非常大的文件生成它。函数模块CALCULATE_HASH_FOR_CHAR不符合我的要求,因为它需要一个字符串作为输入参数。虽然它适用于较小的文件,但如果是 4 GB 的文件,则无法构造这么大的字符串。

有谁知道是否有一个标准的编码来做到这一点(我的谷歌努力没有给我带来任何东西)或者也许有人在 ABAP 中有一个 MD5 算法来计算文件的哈希值?

4

3 回答 3

6

看起来该算法的实现是不可能的,ABAP因为该语言在计算过程中不允许算术溢出。这也应该回答了为什么到目前为止它还没有在 SAP 系统中实施的问题。无论哪种方式看起来都没有其他方法可以调用外部工具,遗憾的是,它几乎不独立于平台。

编辑:好的!因此,在 René 和Java 中 Fast MD5 Implementation的代码的大力帮助下,我在 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_RAWhttp ://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 回答