2017-10-05 1 views
0

저는 실제로 netsuite 제품을 기반으로하는 새로운 프로젝트를 진행하고 있습니다. hmac sha256을 사용하여 메시지를 암호화하려고합니다.SuiteScript hmac sha256

나는 stringToEncrypt와 키를 가지고 있다고 생각하면 간단한 방법이 있습니다. 내가 Netsuite의에서 문서를 읽었지만 여전히 stucked있어

... 내 기능 단어 crypto 뒤에 물론

function toHmacSHA256Base64(toCrypt, key) { 
     var inputString = toCrypt; 
     var myGuid = key; 
     var sKey = crypto.createSecretKey({ 
      guid: myGuid, 
      encoding: encode.Encoding.UTF_8 
     }); 
     var hmacSHA256 = crypto.createHmac({ 
      algorithm: 'SHA256', 
      key: sKey 
     }); 
     hmacSHA256.update({ 
      input: inputString, 
      inputEncoding: encode.Encoding.BASE_64 
     }); 
     var digestSHA256 = hmacSHA256.digest({ 
      outputEncoding: encode.Encoding.HEX 
     }); 
     return digestSHA256; 
}; 

있습니다

나는 모듈 'N/crypto'encode 'N/encode'를 사용합니다. Thx 많이 있습니다.

답변

0

대략적인 내용이며 NS 도움말의 샘플과 정확하게 같습니다. 문자열이 있으면 업데이트 호출에 inputEncoding:encode.Encoding.UTF_8이 필요합니다.

비밀 키의 GUID를 생성하는 방법이 없습니다. 스위트 렛을 사용하고 있습니다. NS 도움의 addSecretKeyField하지 addCredentialField 참고 :

/** 
*@NApiVersion 2.x 
*@NScriptType Suitelet 
*/ 
define(['N/ui/serverWidget', './config.js'], 
    function(serverWidget, config) { 
     function onRequest(context) { 
      if (context.request.method === 'GET') { 
       var form = serverWidget.createForm({ 
        title: 'SFTP Password' 
       }); 

       form.addSecretKeyField({ 
        id : 'username', 
        label : 'Pwd', 
        restrictToScriptIds : config.targetScript, 
        restrictToCurrentUser : false 
       }); 
       form.addSubmitButton({ 
        label: 'Submit Button' 
       }); 

       context.response.writePage(form); 
      } else { 
       var textField = context.request.parameters.username; 
       context.response.write('You have entered: ' + textField); 
      } 
     } 

     return { 
      onRequest: onRequest 
     }; 
    }); 

FWIW 암호화 여기에 잘못된 용어입니다. 데이터 무결성을 보장하는 데 사용되는 데이터의 해시를 만듭니다. 해시는 해독 할 수 없습니다.

+0

RESTlet에서 HMAC를 계산하려고하는데 형식이 관련되어 있지 않습니다. 외부 웹 서비스를 호출하려고 시도하고 있으며 해당 웹 서비스를 사용하려면 HMAC를 보내야합니다. 나는 폼이 포함되지 않은 채 secretKey를 생성 할 수있는 방법이 없다고 생각한다. 거기 있니? 이 간단한 일을하기 위해 암호 js에서 루틴을 가져와야 할 것 같습니다. –

+0

이 양식은 hmac 키에 대한 keystore 참조를 얻는 데 한 번 사용됩니다. 나는 ss1과 ss2 둘 다에 대한 외부 라이브러리 경로를 갔다. 그리고 그것은 또한 작동한다. – bknights

관련 문제