The standard class CL_ABAP_MESSAGE_DIGEST can generate hashes for string or raw data.
This sample builds a hash from multiple input values.
DATA lo_digest TYPE Ref To cl_abap_message_digest. | |
DATA lv_timestamp TYPE timestampl. | |
DATA lv_int TYPE int4. | |
DATA lv_text TYPE string. | |
DATA lv_hash_string TYPE string. | |
DATA lv_hash_base64 TYPE string. | |
* prepare test data | |
GET TIME STAMP FIELD lv_timestamp. | |
lv_int = sy-uzeit+5(1). | |
lv_text = sy-uname. | |
* create a message digest object with a given hash algo | |
lo_digest = cl_abap_message_digest=>get_instance( 'sha1' ). | |
lo_digest->update( if_data = cl_abap_message_digest=>string_to_xstring( |{ lv_timestamp }| ) ). | |
lo_digest->update( if_data = cl_abap_message_digest=>string_to_xstring( |{ lv_int }| ) ). | |
lo_digest->update( if_data = cl_abap_message_digest=>string_to_xstring( |{ lv_text }| ) ). | |
lo_digest->digest( ). | |
lv_hash_string = lo_digest->to_string( ). | |
lv_hash_base64 = lo_digest->to_base64( ). | |
* output hashes | |
WRITE: / 'Hash string: ', lv_hash_string. | |
WRITE: / 'Base64 string: ', lv_hash_base64. |