【问题标题】:Do string decryption require guid and iv (initialization vector)字符串解密是否需要 guid 和 iv(初始化向量)
【发布时间】:2018-12-14 18:32:12
【问题描述】:

我正在使用 guid 进行字符串加密,如下所示,并存储 cipherout.ciphertext 值,但不存储 cipherout.iv 值。 但是在解密时,为什么我不能只传递密钥,而不是传递密钥和 cipherout.iv 值。因为它在解密时要求这两个值。我是否需要同时存储密钥和 cipherout.iv 值以进行解密? 请指教

FIRSTFILE.js:

var guid = "4ab23a136dc347d";
var inputString = "sometext";

// Create the key
var key = crypto.createSecretKey({guid:guid, encoding:encode.Encoding.UTF_8});

// Encrypt
var cipher = crypto.createCipher({algorithm: crypto.EncryptionAlg.AES, key: key});
cipher.update({input: inputString, inputEncoding: encode.Encoding.UTF_8});
var cipherout = cipher.final({outputEncoding: encode.Encoding.HEX});```

SECONDFILE.JS

// Decrypt
var decipher = crypto.createDecipher({algorithm: crypto.EncryptionAlg.AES, key: key, iv:cipherout.iv}); //HERE 
decipher.update({input: cipherout.ciphertext, inputEncoding: encode.Encoding.HEX});
var decipherout = decipher.final({outputEncoding: encode.Encoding.UTF_8});```

【问题讨论】:

    标签: netsuite suitescript suitescript2.0


    【解决方案1】:

    是的,您需要同时存储两者。如果没有初始向量,即使使用密码也无法解密消息。这个想法是:所有消息的密码都可以相同,但是 IV 是在加密时创建的,并且总是不同的。 IV 可以用 4096 RSA 加密,但所有消息 cab 对于 RSA 来说太长了,你用 AES 加密它。 AES 从安全角度来看并不好,所以我们需要使用密码和一次性密钥 - 初始向量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-17
      • 1970-01-01
      • 2011-05-15
      相关资源
      最近更新 更多