2015-06-24 5 views
2

Я пытаюсь реализовать некоторые криптографические функции в ABAP, и меня путают с низкой производительностью операций над двоичными строками.Работа с двоичными данными в ABAP

Например, у меня есть строка X (не XString), и я хочу прочитать ее после байта в цикле. Я говорю:

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

Это работает, но скорость чтения составляет около 1,5 МБ/с. Другие операции, включая побитовое добавление, круговые сдвиги и модульные дополнения, также работают медленно.

В результате у меня есть скорость хеширования около 600 КБ/с в ABAP по сравнению с ~ 100 МБ/с в C/C++.

У меня есть сомнение в том, что ABAP подходит для обработки двоичных данных. Возможно, существуют идиоматические способы обработки двоичных данных; или нет способа, кроме извлечения криптографических функций, например, в C# или Java-сервисах?

+0

Я бы сказал, что ваши сомнения не являются необоснованными. Это не то, что было разработано ABAP, поэтому большинство криптографических функций, предоставляемых SAP (вы проверили их, чтобы увидеть, можно ли их повторно использовать, правильно? :-)) предоставляются функциями ядра. – vwegert

+0

Да, к сожалению, мне нужна криптография для конкретной страны, которая еще не реализована SAP. Насколько я знаю, пользователи не имеют возможности реализовать свои собственные функции ядра (по крайней мере, потому, что у них нет источников требуемых заголовков C). –

+0

На самом деле не существует возможности реализовать свои собственные функции ядра (поскольку они предоставляются исполняемым файлом 'disp + work', который не модифицируется). – mjturner

ответ

1

Как было предложено, ABAP не всегда является лучшим способом реализовать функциональность системного типа не только по соображениям производительности, но и потому, что обработка определенных типов данных в ABAP может быть довольно громоздкой в ​​разы.

Возможно, вы можете реализовать свои криптографические функции в C, а затем подключиться к ним из ABAP через RFC, при этом ваше приложение C выступает в роли RFC-сервера и вы вызываете его из ABAP посредством вызова RFC. Вы можете узнать больше об установке NetWeaver RFC SDK here и о написании RFC-сервера here.

0

Я бы проверил функциональные модули в функциональной группе SECH.

Он имеет функциональные модули для MD5 и расчетных хешей.

Можете ли вы рассказать немного больше о вашем случае использования или необходимости для высокопроизводительных двоичных операций?

Смежные вопросы