我想在 ABAP 中生成一个文本文件的 MD5 哈希。我还没有找到任何标准的解决方案来为一个非常大的文件生成它。函数模块CALCULATE_HASH_FOR_CHAR
不符合我的要求,因为它需要一个字符串作为输入参数。虽然它适用于较小的文件,但如果是 4 GB 的文件,则无法构造这么大的字符串。
有谁知道是否有一个标准的编码来做到这一点(我的谷歌努力没有给我带来任何东西)或者也许有人在 ABAP 中有一个 MD5 算法来计算文件的哈希值?
看起来该算法的实现是不可能的,ABAP
因为该语言在计算过程中不允许算术溢出。这也应该回答了为什么到目前为止它还没有在 SAP 系统中实施的问题。无论哪种方式看起来都没有其他方法可以调用外部工具,遗憾的是,它几乎不独立于平台。
编辑:好的!因此,在 René 和Java 中 Fast MD5 Implementation的代码的大力帮助下,我在 ABAP 中创建了MD5 算法的实现。此实现允许使用更多字节更新计算的哈希值,当然这些字节可能来自不同的来源。
到目前为止,还没有任何方法可以获取文件,但无论如何大部分工作已经完成。
代码中包含了一些简单的 ABAP 单元测试,其中还记录了如何使用它。
也许您可以读取几兆字节的数据块中的文件,并使用建议的函数创建一个哈希列表。然后使用生成的哈希列表创建单个顶部哈希。
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.