点击此处---> 群内免费提供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编码的字符串 )。
谢谢。
在这种情况下,您确定有关JS代码中的这一行吗?
方法CryptoJS.enc.Hex.parse解析已十六进制编码的字符串并将其转换为字符串。
因此,如果要从十六进制中提取字符串,则可以使用它,并且如果要从字符串中进行十六进制编码,则可以使用Hex.stringify。
所以我有点困惑。
此代码返回的值是什么? 我认为是空的。
检查CryptoJS文档:
https://cryptojs.gitbook.io/docs/
Viktor
按预期工作。 非常感谢Viktor。
嗨,Sunil,
如果字符串已经进行了十六进制编码,则可以直接进行转换:
我只需要知道如何进行十六进制编码。 -谢谢。
您也可以在ABAP中编写JavaScript代码。 您尝试过吗?
在ABAP中使用Javascript已被弃用,因为现在已有许多版本发布(另请参见 https://help.sap.com/viewer/fe1d31bb6c551014b75bc66f0328fefe/7.02.19/en-US/808676416e805958e10000000a1550b0.html )
一周热门 更多>