【问题标题】:Decoding NetSuite Password Custom Field Type解码 NetSuite 密码自定义字段类型
【发布时间】:2017-05-24 16:44:05
【问题描述】:
我正在 NetSuite 中创建一个自定义记录来保存外部系统的用户凭据,以便在两者之间建立集成。我想使用“密码”字段类型,这样其他系统的密码就被屏蔽了,它们不能被抓取。但是,当我在其中一个字段中输入一个值时,保存后该值会转换为某种十六进制表示,我不能使用它来传递到另一个系统。我找不到有关如何解码要使用的值的信息。在我不知道的地方有一些 JavaScript 解码功能吗?我在 NetSuite 的文档中确实没有看到任何内容。
【问题讨论】:
标签:
javascript
passwords
hex
netsuite
【解决方案1】:
密码字段不存储值。保存记录时,使用 SHA-1 对值进行加密,并将哈希值保存在数据库中。这意味着您无法获得原始值,而是获得生成的哈希。
这种类型的字段不打算在保存时加密值,并在您尝试获取值时解密。您应该使用密码字段来存储散列,然后与另一个散列进行比较以验证它们是否具有相同的值。
例如,您可以将“myPassword”保存在密码字段中,然后将生成并存储散列 82bb34c7f299fdf854b4aaeeb747cbcb8de0ad9。然后,您可以使用nlapiEncrypt 方法从使用 SHA-1 的值生成哈希并比较结果。在这种情况下,nlapiEncrypt('myPassword', 'sha1') 返回 82bb34c7f299fdf854b4aaeeb747cbcb8de0ad9,这意味着 'myPassword' 是存储在密码字段中的值,因为哈希值相等。
如果您需要加密/解密,您应该使用对称加密算法(如 AES)和密钥来加密并将值存储在文本字段中:
nlapiEncrypt('myPassword', 'aes', '125C0B9A3D642927A0C60A6EABDF7948')
最后一个参数是关键,并且:
nlapiDecrypt('0e3d0eb7c1fed79402a5bd695aee5b11', 'aes', '125C0B9A3D642927A0C60A6EABDF7948') 进行解密,其中第一个参数是加密后的值。