我试图在ABAP中计算字符串上的SHA2校验和。我遇到了函数CALCULATE_HASH_FOR_CHAR和CALCULATE_HMAC_FOR_CHAR。然而,CALCULATE_HASH_FOR_CHAR只能计算SHA1(输入SHA2没有返回任何值)。
相比之下,CALCULATE_HMAC_FOR_CHAR似乎依赖于在SecureStorage中维护的条目,所以这对我来说并不是真的有帮助(我不确定它会给我需要的结果)。
此外,在看到FM ssfh_f4_hashhalg如何返回哈希算法的可能值之后,似乎可能的值取决于您已安装的sapseculib版本。
还有什么想法吗?我可以在ABAP中计算SHA2哈希?
好的,似乎答案是使用类CL_ABAP_MESSAGE_DIGEST(然后指定SHA256作为算法)。该信息在注释1410294(支持消息摘要和HMAC的sha2家族)中,并且需要特定的内核补丁级别等。
假设您的内核是最新的(SAP Note),您可以使用SHA512
算法如下:
DATA result type string.
TRY.
cl_abap_message_digest=>calculate_hash_for_char(
EXPORTING
if_algorithm = 'SHA512'
if_data = 'My String to Hash'
IMPORTING
ef_hashstring = result
).
CATCH cx_root.
" Eh, what're you gonna do?
ENDTRY.