Есть “ERR_CRYPTO_INVALID_IV». Почему?

#node.js #encryption #cryptography #block-cipher

Вопрос:

Командная строка — узел

Что я сделал не так? Это Node.js 16.1.0.

 > crypto.createCipheriv("AES-128-CTR", Buffer.allocUnsafe(16), Buffer.allocUnsafe(16));
Cipheriv {…}
 
 > crypto.createCipheriv("AES-128-OCB", Buffer.allocUnsafe(16), Buffer.allocUnsafe(16));
Uncaught TypeError: Invalid initialization vector
    at Cipheriv.createCipherBase (node:internal/crypto/cipher:119:19)
    at Cipheriv.createCipherWithIV (node:internal/crypto/cipher:138:3)
    at new Cipheriv (node:internal/crypto/cipher:246:3)
    at Object.createCipheriv (node:crypto:131:10) {
  code: 'ERR_CRYPTO_INVALID_IV'
}
 

Комментарии:

1. Вы, кажется, знакомы с режимом OCB, двойное понижение. Неужели это было так очевидно для тебя ?

2. О единственной возможной ошибке с капельницей заключается в том, что она неправильного размера, слишком большая или слишком маленькая. Проверьте размер капельницы, которую вы проходите.

Ответ №1:

Начальный вектор для режима OCB должен составлять 12 октетов; то есть 96 бит.