2017-10-05 35 views
0

私は実際にnetsuite製品に基づいた新しいプロジェクトに取り組んでいます。 私はhmac sha256を使ってメッセージを暗号化しようとしています。SuiteScript hmac sha256

私はstringToEncryptとキーがあることを考慮すると、簡単な方法があります。

私の機能言葉crypto私はモジュール'N/crypto'encode 'N/encode'を使用背後もちろんの

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; 
}; 

があり...

を私はNetsuiteの中にドキュメントを読んだが、私はまだstuckedです。 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を計算しようとしていますが、フォームは関係ありません。私は外部のWebサービスを呼び出しようとしています。そのWebサービスでは、HMACを送信する必要があります。私は、フォームが関与することなくsecretKeyを作成する方法を見ていない。ある?私はこの簡単なことをするために暗号jsからルーチンをインポートしなければならないと思う。 –

+0

このフォームは、hmacキーのキーストア参照を取得するために一度だけ使用されます。私は両方のss1とss2の外部ライブラリのルートを行っているとそれも動作します – bknights

関連する問題