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