【发布时间】: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