Node.js nodejs AES-128-GCM“;无效的初始化向量长度“;

Node.js nodejs AES-128-GCM“;无效的初始化向量长度“;,node.js,cryptography,Node.js,Cryptography,我看过维基百科,上面说“GCM和GMAC都可以接受任意长度的初始化向量。” 然而,当我试图 crypto.createCipheriv( 'aes-128-gcm', KEY, new Buffer(crypto.randomBytes(16)) ) 我得到了“uncaughttypeerror:invalid iv length 16”-我添加了几个断点,发现nodejs crypto iv length设置为12?这种差异有什么原因吗?这在较新的节点版本(>=6.3)中已得到修

我看过维基百科,上面说“GCM和GMAC都可以接受任意长度的初始化向量。”

然而,当我试图

crypto.createCipheriv(
  'aes-128-gcm',
  KEY,
  new Buffer(crypto.randomBytes(16))
)

我得到了“uncaughttypeerror:invalid iv length 16”-我添加了几个断点,发现nodejs crypto iv length设置为12?这种差异有什么原因吗?

这在较新的节点版本(>=6.3)中已得到修复。以下是相关的GitHub线程和PR:

开发人员似乎只是在处理任意长度之前实现了推荐的默认值