【问题标题】:Working with binary data in ABAP在 ABAP 中处理二进制数据
【发布时间】:2015-06-25 23:23:57
【问题描述】:

我正在尝试在 ABAP 中实现一些加密函数,但我对二进制字符串的低性能操作感到困惑。

例如,我有一个 X 字符串(不是 XString),我想在循环中逐个字节地读取它。我说:

DO n TIMES.
  b = data+offset(1).
...

这可行,但读取速度约为 1.5 MB/s。包括按位加法、循环移位和模加法在内的其他运算也运行缓慢。

因此,我在 ABAP 中的哈希速度约为 600 KB/s,而在 C/C++ 中约为 100 MB/s。

我怀疑 ABAP 是否适合处理二进制数据。也许还有另一种惯用的方法来处理二进制数据;还是只能将加密函数提取到 C# 或 Java 服务中?

【问题讨论】:

  • 我想说你的怀疑并非没有根据。这不是 ABAP 的设计初衷,这就是为什么 SAP 提供的大多数加密函数(您检查了这些以查看是否可以重用它们,对吗?:-))由内核函数提供。
  • 是的,很遗憾,我需要 SAP 尚未实施的特定国家/地区的加密技术。据我所知,用户不可能实现自己的内核函数(至少因为他们没有所需的 C 头文件的来源)。
  • 确实,没有办法实现您自己的内核函数(因为这些函数是由不可修改的disp+work 可执行文件提供的)。
  • 前段时间我在ABAP中实现了一个md5校验和算法,遇到了同样的性能问题。看看这个question。例如,它看起来以某种方式在引擎盖下的字符串上实现了按位运算,因此非常非常慢。

标签: performance cryptography abap


【解决方案1】:

正如已经建议的那样,ABAP 不一定是实现系统类型功能的最佳方式,这不仅是出于性能原因,而且因为有时在 ABAP 中处理某些数据类型可能非常笨拙。

也许您可以在 C 中实现您的加密函数,然后通过 RFC 从 ABAP 与它们交互,您的 C 应用程序充当 RFC 服务器,您可以通过 RFC 调用从 ABAP 调用它。您可以了解有关安装 NetWeaver RFC SDK here 和编写 RFC 服务器 here 的更多信息。

【讨论】:

    猜你喜欢
    • 2011-03-04
    • 2011-08-16
    • 2011-06-24
    • 2011-08-18
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2011-02-04
    相关资源
    最近更新 更多