correct nonce/iv size for AES-GCM mode
编辑:问题可以简化为:
以下Node.js代码给出"无效的IV长度"错误。为什么? IV应该是什么?
1 2 | const crypto = require('crypto') const decipher = crypto.createDecipheriv('aes-128-gcm', crypto.randomBytes(16), crypto.randomBytes(16)) |
我正在GCM模式下使用AES加密某些数据,但是我正在使用两种不同的语言和库进行加密和解密,它们似乎对我需要的词汇有所不同。
我正在使用Python库(加密)进行加密。
(此示例中的加密代码)
我正在使用默认的Node.js加密库解密。该库需要一个会话密钥,一个标记和一个IV。当我将Python随机数作为IV传递时,它给我一个"无效的IV大小"。错误。 Node库的示例似乎使用12个字符的字符串作为IV。
我的解密代码如下(从此处获取):
1 2 3 | var decipher = crypto.createDecipheriv(algorithm, password, nonce) decipher.setAuthTag(encrypted.tag); var dec = decipher.update(encrypted.content, 'hex', 'utf8') |
此方案的IV和随机数之间有什么区别?我该如何解决?谢谢!
事实证明,GCM的随机数应为12个字节长。我不确定为什么python库默认情况下会自动生成一个16字节的随机数,但是您可以生成自己的并在