我想在ABAP中生成文本文件的MD5哈希。我还没有找到任何标准解决方案来为非常大的文件生成它。函数模块CALCULATE_HASH_FOR_CHAR
不符合我的要求,因为它将字符串作为输入参数。虽然它适用于较小的文件,但在例如 4 GB 文件的情况下,无法构造这么大的字符串。
有谁知道是否有一段标准的编码来做到这一点(我的谷歌努力没有给我带来任何东西),或者也许有人在 ABAP 中有一个 MD5 算法来计算文件的哈希?
看起来这个算法在ABAP
中是不可能的,因为该语言不允许在计算过程中出现算术溢出。这也应该回答为什么到目前为止还没有在SAP系统中实现的问题。无论哪种方式,似乎都没有其他方法可以调用外部工具,遗憾的是,外部工具几乎不是独立于平台的。
编辑:好的!因此,在 René 和 Java 中快速 MD5 实现代码的大力帮助下,我在 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.