<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Convert ArrayBuffer to String XSJS Application (sha1, md5, sha256) in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692056#M31163</link>
    <description>&lt;P&gt;Hello&lt;BR /&gt;&lt;BR /&gt;For anyone still having trouble to convert the ArrayBuffer returned from the &lt;A href="https://help.sap.com/doc/3de842783af24336b6305a3c0223a369/2.0.04/en-US/$.security.crypto.html"&gt;crypto xsjs built in functions&lt;/A&gt;&lt;/P&gt;&lt;P&gt;you can do this :&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;$.util.codec.encodeBase64($.security.crypto.sha256("data","secret"));&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 21 May 2021 15:19:38 GMT</pubDate>
    <dc:creator>nerevar</dc:creator>
    <dc:date>2021-05-21T15:19:38Z</dc:date>
    <item>
      <title>Convert ArrayBuffer to String XSJS Application (sha1, md5, sha256)</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692052#M31159</link>
      <description>&lt;P&gt;Hello everyone,&lt;/P&gt;
  &lt;P&gt;Currently I'm implementing some XSJS Applocation and to increase security I've implemented additional sha1 hash on both server and user sides. But now the problem is, that I cannot compare these to hashes which each other because on server side sha1 returns ArrayBuffer and not String data type. Can you please guide me how to convert this type into String data type? There is an easy way t achieve this in HANA XSJS?&lt;/P&gt;
  &lt;P&gt;Server side I'm using: $.security. crypto.sha1("some_text");&lt;/P&gt;
  &lt;P&gt;This is returning ArrayBuffer and I need String. @&lt;A href="https://answers.sap.com/users/4198/thomasjung.html"&gt;Thomas Jung&lt;/A&gt; maybe you know what is the answer? &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
  &lt;P&gt;Thanks in advance!&lt;/P&gt;
  &lt;P&gt;XSJS security crypto documentation:&lt;/P&gt;
  &lt;P&gt;&lt;A href="https://help.sap.com/doc/3de842783af24336b6305a3c0223a369/2.0.01/en-US/$.security.crypto.html" target="test_blank"&gt;https://help.sap.com/doc/3de842783af24336b6305a3c0223a369/2.0.01/en-US/$.security.crypto.html&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Nov 2018 12:49:08 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692052#M31159</guid>
      <dc:creator>susuang</dc:creator>
      <dc:date>2018-11-06T12:49:08Z</dc:date>
    </item>
    <item>
      <title>Re: Convert ArrayBuffer to String XSJS Application (sha1, md5, sha256)</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692053#M31160</link>
      <description>&lt;P&gt;Did you find an answer to this? $.util.stringify throws 'conversion to UTF16 failed'. Thanks.&lt;/P&gt;</description>
      <pubDate>Fri, 01 Feb 2019 09:28:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692053#M31160</guid>
      <dc:creator>former_member308406</dc:creator>
      <dc:date>2019-02-01T09:28:59Z</dc:date>
    </item>
    <item>
      <title>Re: Convert ArrayBuffer to String XSJS Application (sha1, md5, sha256)</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692054#M31161</link>
      <description>&lt;P&gt;ArraryBuffer to String is a pretty normal JavaScript thing to do. You don't need APIs from SAP for it.  I'd suggest just searching on the web.  I found this good item on stack overflow on the tpoic:&lt;/P&gt;&lt;P&gt;&lt;A href="https://stackoverflow.com/questions/6965107/converting-between-strings-and-arraybuffers" target="test_blank"&gt;https://stackoverflow.com/questions/6965107/converting-between-strings-and-arraybuffers&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Feb 2019 11:54:45 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692054#M31161</guid>
      <dc:creator>thomas_jung</dc:creator>
      <dc:date>2019-02-01T11:54:45Z</dc:date>
    </item>
    <item>
      <title>Re: Convert ArrayBuffer to String XSJS Application (sha1, md5, sha256)</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692055#M31162</link>
      <description>&lt;P&gt;Unfortunately I haven't find an answer to this problem - I have spent some time to figure out how to solve it with SAP crypto library but with no luck. That is why I have used JavaScript SHA1 implementation (below) and then compare it with given hash.&lt;/P&gt;&lt;P&gt;Source: &lt;A href="https://coursesweb.net/javascript/sha1-encrypt-data_cs"&gt;https://coursesweb.net/javascript/sha1-encrypt-data_cs&lt;/A&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;/**
* Secure Hash Algorithm (SHA1)
* &lt;A href="http://www.webtoolkit.info/" target="test_blank"&gt;http://www.webtoolkit.info/&lt;/A&gt;
**/
function SHA1(msg) {
 function rotate_left(n,s) {
 var t4 = ( n&amp;lt;&amp;lt;s ) | (n&amp;gt;&amp;gt;&amp;gt;(32-s));
 return t4;
 };
 function lsb_hex(val) {
 var str='';
 var i;
 var vh;
 var vl;
 for( i=0; i&amp;lt;=6; i+=2 ) {
 vh = (val&amp;gt;&amp;gt;&amp;gt;(i*4+4))&amp;amp;0x0f;
 vl = (val&amp;gt;&amp;gt;&amp;gt;(i*4))&amp;amp;0x0f;
 str += vh.toString(16) + vl.toString(16);
 }
 return str;
 };
 function cvt_hex(val) {
 var str='';
 var i;
 var v;
 for( i=7; i&amp;gt;=0; i-- ) {
 v = (val&amp;gt;&amp;gt;&amp;gt;(i*4))&amp;amp;0x0f;
 str += v.toString(16);
 }
 return str;
 };
 function Utf8Encode(string) {
 string = string.replace(/\r\n/g,'\n');
 var utftext = '';
 for (var n = 0; n &amp;lt; string.length; n++) {
 var c = string.charCodeAt(n);
 if (c &amp;lt; 128) {
 utftext += String.fromCharCode(c);
 }
 else if((c &amp;gt; 127) &amp;amp;&amp;amp; (c &amp;lt; 2048)) {
 utftext += String.fromCharCode((c &amp;gt;&amp;gt; 6) | 192);
 utftext += String.fromCharCode((c &amp;amp; 63) | 128);
 }
 else {
 utftext += String.fromCharCode((c &amp;gt;&amp;gt; 12) | 224);
 utftext += String.fromCharCode(((c &amp;gt;&amp;gt; 6) &amp;amp; 63) | 128);
 utftext += String.fromCharCode((c &amp;amp; 63) | 128);
 }
 }
 return 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&amp;lt;msg_len-3; i+=4 ) {
 j = msg.charCodeAt(i)&amp;lt;&amp;lt;24 | msg.charCodeAt(i+1)&amp;lt;&amp;lt;16 |
 msg.charCodeAt(i+2)&amp;lt;&amp;lt;8 | msg.charCodeAt(i+3);
 word_array.push( j );
 }
 switch( msg_len % 4 ) {
 case 0:
 i = 0x080000000;
 break;
 case 1:
 i = msg.charCodeAt(msg_len-1)&amp;lt;&amp;lt;24 | 0x0800000;
 break;
 case 2:
 i = msg.charCodeAt(msg_len-2)&amp;lt;&amp;lt;24 | msg.charCodeAt(msg_len-1)&amp;lt;&amp;lt;16 | 0x08000;
 break;
 case 3:
 i = msg.charCodeAt(msg_len-3)&amp;lt;&amp;lt;24 | msg.charCodeAt(msg_len-2)&amp;lt;&amp;lt;16 | msg.charCodeAt(msg_len-1)&amp;lt;&amp;lt;8 | 0x80;
 break;
 }
 word_array.push( i );
 while( (word_array.length % 16) != 14 ) word_array.push( 0 );
 word_array.push( msg_len&amp;gt;&amp;gt;&amp;gt;29 );
 word_array.push( (msg_len&amp;lt;&amp;lt;3)&amp;amp;0x0ffffffff );
 for ( blockstart=0; blockstart&amp;lt;word_array.length; blockstart+=16 ) {
 for( i=0; i&amp;lt;16; i++ ) W[i] = word_array[blockstart+i];
 for( i=16; i&amp;lt;=79; i++ ) W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);
 A = H0;
 B = H1;
 C = H2;
 D = H3;
 E = H4;
 for( i= 0; i&amp;lt;=19; i++ ) {
 temp = (rotate_left(A,5) + ((B&amp;amp;C) | (~B&amp;amp;D)) + E + W[i] + 0x5A827999) &amp;amp; 0x0ffffffff;
 E = D;
 D = C;
 C = rotate_left(B,30);
 B = A;
 A = temp;
 }
 for( i=20; i&amp;lt;=39; i++ ) {
 temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) &amp;amp; 0x0ffffffff;
 E = D;
 D = C;
 C = rotate_left(B,30);
 B = A;
 A = temp;
 }
 for( i=40; i&amp;lt;=59; i++ ) {
 temp = (rotate_left(A,5) + ((B&amp;amp;C) | (B&amp;amp;D) | (C&amp;amp;D)) + E + W[i] + 0x8F1BBCDC) &amp;amp; 0x0ffffffff;
 E = D;
 D = C;
 C = rotate_left(B,30);
 B = A;
 A = temp;
 }
 for( i=60; i&amp;lt;=79; i++ ) {
 temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) &amp;amp; 0x0ffffffff;
 E = D;
 D = C;
 C = rotate_left(B,30);
 B = A;
 A = temp;
 }
 H0 = (H0 + A) &amp;amp; 0x0ffffffff;
 H1 = (H1 + B) &amp;amp; 0x0ffffffff;
 H2 = (H2 + C) &amp;amp; 0x0ffffffff;
 H3 = (H3 + D) &amp;amp; 0x0ffffffff;
 H4 = (H4 + E) &amp;amp; 0x0ffffffff;
 }
 var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);

 return temp.toLowerCase();
}&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 10 Jun 2020 05:54:56 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692055#M31162</guid>
      <dc:creator>zurawd02</dc:creator>
      <dc:date>2020-06-10T05:54:56Z</dc:date>
    </item>
    <item>
      <title>Re: Convert ArrayBuffer to String XSJS Application (sha1, md5, sha256)</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692056#M31163</link>
      <description>&lt;P&gt;Hello&lt;BR /&gt;&lt;BR /&gt;For anyone still having trouble to convert the ArrayBuffer returned from the &lt;A href="https://help.sap.com/doc/3de842783af24336b6305a3c0223a369/2.0.04/en-US/$.security.crypto.html"&gt;crypto xsjs built in functions&lt;/A&gt;&lt;/P&gt;&lt;P&gt;you can do this :&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;$.util.codec.encodeBase64($.security.crypto.sha256("data","secret"));&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 21 May 2021 15:19:38 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692056#M31163</guid>
      <dc:creator>nerevar</dc:creator>
      <dc:date>2021-05-21T15:19:38Z</dc:date>
    </item>
    <item>
      <title>Re: Convert ArrayBuffer to String XSJS Application (sha1, md5, sha256)</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692057#M31164</link>
      <description>&lt;P&gt;this works. thanks&lt;/P&gt;</description>
      <pubDate>Tue, 17 Aug 2021 03:55:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/convert-arraybuffer-to-string-xsjs-application-sha1-md5-sha256/m-p/692057#M31164</guid>
      <dc:creator>AdrianDBorja</dc:creator>
      <dc:date>2021-08-17T03:55:26Z</dc:date>
    </item>
  </channel>
</rss>

