ABAP 字符串到 SHA256 与 SAPUI5/Javascript 不同



目前在我的SAPUI5项目中,我正在使用以下代码行创建一个HMAC编码字符串:

var secretKey = CryptoJS.enc.Hex.parse('SECRETKEY'); //USING THE CRYPTOJS LIBRARY!
var hash = CryptoJS.HmacSHA256('abc', secretKey);
hashInBase64 = CryptoJS.enc.Base64.stringify(hash);

这给了eZdbNMwgWKOANEiozokNG2FGfzI7Yy/B8IQKXr3+krY=

我正在使用 CryptoJS 库在 UI5 中执行此代码。

但是,问题是当我想在 ABAP 中执行相同操作时,我收到了错误的 HMAC 编码字符串。经过几次测试,在计算 HMAC 之前,编码(在 abap 中(似乎是错误的。

是否有一个函数模块可以执行"CryptoJS.enc.Hex.parse((" - 在谷歌搜索它的作用后,它将参数解释为编码并将其转换为单词数组:

DATA:
  lv_sign_key_x                TYPE xstring,
  lv_hmac_result               TYPE string.
DATA(lv_binary_secret) = cl_abap_hmac=>string_to_xstring('SECRETKEY').
cl_abap_hmac=>calculate_hmac_for_char(
  EXPORTING
    if_algorithm           = 'SHA256'           "Hash Algorithm
    if_key                 = lv_binary_secret   "HMAC Key
    if_data                = 'abc'   "Data
  IMPORTING
    ef_hmacb64string       = lv_hmac_result  "HMAC value as base64-encoded string
).

这给了9dyEZn5G+uiRwsNqgY5S6k9/gmCheFNF4vFa5qBKK1w=

显示编码为十六进制并计算为HMAC256的确切方法。链接

data lv_binary_secret type xstring.
data lv_string type string value '48656c6c6f2c20576f726c6421'.
translate lv_string to upper case.
lv_binary_secret = lv_string.

cl_abap_hmac=>calculate_hmac_for_char(
  EXPORTING
    if_algorithm           = 'SHA256'           "Hash Algorithm
    if_key                 = lv_binary_secret   "HMAC Key
    if_data                = 'abc'   "Data
  IMPORTING
    ef_hmacb64string       = data(lv_hmac_result)  "HMAC value as base64-encoded string
).`enter code here`

相关内容

  • 没有找到相关文章

最新更新