ABAP中文件的MD5哈希

时间:2012-07-05 19:55:19

标签: hash md5 abap

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

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

3 个答案:

答案 0 :(得分:6)

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

编辑:好的!因此,在René和Fast MD5 Implementation in Java代码的帮助下,我创建了implementation of MD5 algorithm in ABAP。此实现允许使用更多字节更新计算的散列,当然这可能来自不同的来源。

到目前为止,没有方法可以获取文件,但是大部分工作已经完成。

代码中包含一些简单的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_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.