解码 NetSuite 密码自定义字段类型

Decoding NetSuite Password Custom Field Type

我正在 NetSuite 中创建一个自定义记录来保存外部系统的用户凭据,以便在两者之间建立集成。我想使用 "Password" 字段类型,这样其他系统的密码就被屏蔽了,不能随便被抓取。但是,当我在其中一个字段中输入一个值时,保存后该值将转换为某种十六进制表示形式,我无法使用它传递到其他系统。我找不到有关如何解码要使用的值的信息。有什么我不知道的 JavaScript 解码功能吗?我在 NetSuite 的文档中确实没有看到任何内容。

密码字段不存储值。保存记录时,使用 SHA-1 对值进行加密,并将哈希值保存在数据库中。这意味着您无法获得原始值,而是生成的哈希值。 这种类型的字段不打算在保存值时加密值,并在您尝试获取值时解密。您应该使用密码字段来存储哈希,然后与另一个哈希进行比较以验证它们是否具有相同的值。

例如,您可以在密码字段中保存 'myPassword',然后将生成并存储散列值 82bb34c7f299fdf854b4aaeeb747cbcb8de0ad9。然后,您可以使用 nlapiEncrypt 方法使用 SHA-1 从值生成哈希并比较结果。在这种情况下,nlapiEncrypt('myPassword', 'sha1') returns 82bb34c7f299fdf854b4aaeeb747cbcb8de0ad9,这意味着 'myPassword' 是存储在密码字段中的值,因为哈希值是相等的。

如果您需要 encrypt/decrypt,您应该使用 AES 等对称加密算法和一个密钥来加密并将值存储在文本字段中:

nlapiEncrypt('myPassword', 'aes', '125C0B9A3D642927A0C60A6EABDF7948')

其中最后一个参数是键,并且:

nlapiDecrypt('0e3d0eb7c1fed79402a5bd695aee5b11', 'aes', '125C0B9A3D642927A0C60A6EABDF7948')解密,第一个参数为加密后的值