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

2020-09-05 17:07发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 当前在我的SAPUI...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

当前在我的SAPUI5项目中,我正在使用此代码行创建HMAC编码的字符串;

 var secretKey = CryptoJS.enc.Hex.parse('SECRETKEY'); //使用CRYPTOJS库!
 var hash = CryptoJS.HmacSHA256('abc',secretKey);
 hashInBase64 = CryptoJS.enc.Base64.stringify(hash); 

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

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

是否有一个执行'CryptoJS.enc.Hex.parse()'的功能模块-在谷歌搜索之后 它会做什么,将参数解释为已编码,然后将其转换为单词数组。

数据:
       lv_sign_key_x TYPE xstring,
       lv_hmac_result TYPE字符串。

 DATA(lv_binary_secret)= cl_abap_hmac => string_to_xstring('SECRETKEY')。

     cl_abap_hmac => calculate_hmac_for_char(
       出口
         if_algorithm ='SHA256'"哈希算法
         if_key = lv_binary_secret" HMAC密钥
         if_data ='abc'"数据
       输入
         ef_hmacb64string = lv_hmac_result" HMAC值作为base64编码的字符串
     )。

 

谢谢。

6条回答
zhangjiyang1323
2020-09-05 17:52 .采纳回答

在这种情况下,您确定有关JS代码中的这一行吗?

 var secretKey = CryptoJS.enc.Hex.parse('SECRETKEY');//使用CRYPTOJS库!

方法CryptoJS.enc.Hex.parse解析已十六进制编码的字符串并将其转换为字符串。

因此,如果要从十六进制中提取字符串,则可以使用它,并且如果要从字符串中进行十六进制编码,则可以使用Hex.stringify。

 var words = CryptoJS.enc.Hex.parse(" 48656c6c6f2c20576f726c6421");
 var hex = CryptoJS.enc.Hex.stringify(words); 

所以我有点困惑。

此代码返回的值是什么? 我认为是空的。

 var secretKey = CryptoJS.enc.Hex.parse('SECRETKEY');//使用CRYPTOJS库!

检查CryptoJS文档:

https://cryptojs.gitbook.io/docs/

Viktor

一周热门 更多>