将ArrayBuffer转换为String XSJS应用程序(sha1,md5,sha256)

2020-08-17 06:45发布

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

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

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


大家好,

当前,我正在实现一些XSJS Applocation,并且为了提高安全性,我在服务器端和用户端都实现了额外的sha1哈希。 但是现在的问题是,我无法将它们与散列进行比较,因为在服务器端sha1返回ArrayBuffer而不是String数据类型。 您能否指导我如何将这种类型转换为String数据类型? 在HANA XSJS中有一个简单的方法可以实现这一目标吗?

我正在使用服务器端:$。security。 crypto.sha1(" some_text");

这将返回ArrayBuffer,并且我需要String。 @ Thomas Jung 也许您知道答案是什么? :)

提前谢谢!

XSJS安全加密文档:

https ://help.sap.com/doc/3de842783af24336b6305a3c0223a369/2.0.01/zh-CN/$.security.crypto.html

3条回答
宇峰Kouji
2020-08-17 07:05

不幸的是,我找不到这个问题的答案-我花了一些时间来弄清楚如何使用SAP密码库解决问题,但是没有运气。 这就是为什么我使用JavaScript SHA1实现(如下),然后将其与给定的哈希值进行比较的原因。

来源: https://coursesweb.net/javascript/sha1-encrypt-data_cs

/**
 *安全哈希算法(SHA1)
 * http://www.webtoolkit.info/
 **/
 函数SHA1(msg){
  函数rotate_left(n,s){
  var t4 =(n << s)|  (n >>>(32-s));
  返回t4;
  };
  函数lsb_hex(val){
  var str ='';
  var i;
  var vh;
  var vl;
  for(i = 0; i <= 6; i + = 2){
  vh =(val >>>(i * 4 + 4))&0x0f;
  vl =(val >>>(i * 4))&0x0f;
  str + = vh.toString(16)+ vl.toString(16);
  }
  返回str;
  };
  函数cvt_hex(val){
  var str ='';
  var i;
  var v;
  for(i = 7; i> = 0; i--){
  v =(val >>>(i * 4))&0x0f;
  str + = v.toString(16);
  }
  返回str;
  };
  函数Utf8Encode(string){
  字符串= string.replace(/\ r \ n/g,'\ n');
  var utftext ='';
  for(var n = 0; n  127)&&(c <2048)){
  utftext + = String.fromCharCode((c >> 6)| 192);
  utftext + = String.fromCharCode((c&63)| 128);
  }
  其他{
  utftext + = String.fromCharCode((c >> 12)| 224);
  utftext + = String.fromCharCode((((c >> 6)&63)| 128);
  utftext + = String.fromCharCode((c&63)| 128);
  }
  }
  返回utftext;
  };
  var blockstart;
  var i,j;
  var W = new Array(80);
  var H0 = 0x67452301;
  var H1 = 0xEFCDAB89;
  var H2 = 0x98BADCFE;
  var H3 = 0x10325476;
  var H4 = 0xC3D2E1F0;
  var A,B,C,D,E;
  var temp;
  msg = Utf8Encode(msg);
  var msg_len = msg.length;
  var word_array = new Array();
  for(i = 0; i >> 29);
  word_array.push((msg_len << 3)&0x0ffffffff);
  for(blockstart = 0; blockstart                                                                     

一周热门 更多>