字符串解密是否需要guid和iv(初始化向量)



我使用guid进行字符串加密,并存储cipherout.ciphertext值,但不存储cipherout.iv值。但在解密时,为什么我不能只传递密钥,而不是同时传递密钥和cipherout.iv值呢。因为它在解密时同时要求两个值。我需要存储key和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});```

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

最新更新