ABAP:HmacSha関連

知的好奇心でVBAに続きABAPでも書いてみました。

驚いたことに「CL_ABAP_HMAC」という見たまんまのクラスを用意していてくれて素直に叩けばおしまいでした。
また、同クラス内にはコード変換、形式変換等のユーティリティメソッドも内包していて至れり尽くせりでした。

VBAとくらべて拍子抜けするほど簡単です。

対応するアルゴリズムは以下の通り
・'MD5'
・'SHA1' or 'SHA-1'
・'SHA256' or 'SHA-256'
・'SHA384' or 'SHA-384'
・'SHA512' or 'SHA-512'

24行目の引数を変えるだけで上記アルゴリズムに対応します。
やっぱ、ABAPって生産性高いなぁ〜って思います。

ソースコードをどうぞ〜!

L001:* 呼び出し元は以下の通り
L002: DATA VALUE TYPE STRING.
L003: PERFORM GET_HMACSHA512
L004: USING
L005: 'key'
L006: 'text'
L007: CHANGING
L008: VALUE.
L009:
L010:*-----------------------------------------------------------------------
L011:* 暗号化する
L012:* Key 秘密鍵
L013:* text メッセージ文字列
L014:*-----------------------------------------------------------------------
L015:FORM GET_HMACSHA512
L016: USING
L017: KEY TYPE STRING
L018: TEXT TYPE STRING
L019: CHANGING
L020: VALUE TYPE STRING.
L021:*-----------------------------------------------------------------------
L022: DATA(LO_HMAC) = CL_ABAP_HMAC=>GET_INSTANCE(
L023: EXPORTING
L024: IF_ALGORITHM = 'SHA-512'
L025: IF_KEY = CL_ABAP_HMAC=>STRING_TO_XSTRING( EXPORTING IF_INPUT = KEY ) ).
L026: LO_HMAC->UPDATE( IF_DATA = CL_ABAP_HMAC=>STRING_TO_XSTRING( EXPORTING IF_INPUT = TEXT ) ).
L027: LO_HMAC->FINAL( ).
L028: VALUE = LO_HMAC->TO_STRING( ).
L029: TRANSLATE VALUE TO LOWER CASE.
L030:ENDFORM.
L031:

検索キーワード
HMAC
HMACMD5
HMAC MD5
HMACRIPEMD160
HMAC RIPEMD160
HMACSHA1
HMAC SHA1
HMACSHA256
HMAC SHA256
HMACSHA384
HMAC SHA384
HMACSHA512
HMAC SHA512
ABAP
ABAP Object
CL_ABAP_HMAC

以上