Ari*_*med 2 netsuite suitescript suitescript2.0
我实际上正在开发一个基于 netsuite 产品的新项目。我正在尝试使用 hmac sha256 加密消息。
考虑到我有 stringToEncrypt 和密钥,最简单的方法是什么。
我已经阅读了 Netsuite 中的文档,但我仍然陷入困境......
有我的功能
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;
};
Run Code Online (Sandbox Code Playgroud)
当然,在这个词后面crypto我使用了模块'N/crypto'and encode 'N/encode'。多谢。
这大致正确,并且看起来与 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
};
});
Run Code Online (Sandbox Code Playgroud)
FWIW 加密在这里是错误的术语。您正在创建数据的哈希值,该哈希值将用于确保数据完整性。您无法解密哈希值。
生成密钥的 GUID 后,我只需将其存储在配置文件中(与上面的脚本列表中使用的文件相同。
在 TypeScript 中它看起来像:
/**
* config.js
* @NApiVersion 2.x
*/
export var config = {
'host': '162.242.144.xxx',
'userName': 'unsername',
'targetScript': ['customscript_transmit_dsv_943', 'customscript_transmit_dsv_940', 'customscript_retrieve_dsv_944'],
'hostKey': 'AAAAB3Nza...Wz'
};
Run Code Online (Sandbox Code Playgroud)
然后,除了 config.xs 文件之外的所有内容都可以存储在版本控制中。需要对脚本中使用的文件适当设置受众。
| 归档时间: |
|
| 查看次数: |
3210 次 |
| 最近记录: |