Nodejs cipher.setAAD (буфер) против Java chiper.updateAAD (byte []), получу ли я тот же authTag? - PullRequest
0 голосов
/ 19 декабря 2018

Я работаю над проектом в Nodejs, который предполагает шифрование открытого текста и отправку зашифрованного текста в программу Java, а сторона Java может его расшифровать.Перед расшифровкой java сторона должна сначала проверить authTag.

Я использую встроенную криптографию Nodejs, функция cipher.setAAD принимает в качестве параметра только буфер, который на самом деле равен unsigned 8-bit Array (Uint8Array).Однако Java cipher.updateAAD использует byteArray, который является подписанным байтовым массивом.

Оба AAD генерируются из одной и той же шестнадцатеричной строки.

Так я могу получить тот же authTag?

Большое спасибо.

1 Ответ

0 голосов
/ 19 декабря 2018

Java byte подписано, но байты в массивах, используемых в криптографии Java, - не только AAD, но также и открытый текст, зашифрованный текст, хэши / MAC / подписи, ключи, сертификаты и т. Д. И т. Д., А также уровень ОС I/ O, как File{Input,Output}Stream - берется по модулю 256, фактически делая их без знака - и значения, которые вы в них помещаете, должны быть в диапазоне 0..255 , преобразованные в byte.

Обратите внимание, что операция дешифрования Java для шифра AEAD не дает аутентификации;вместо этого вы даете ему код проверки подлинности ciphertext PLUS, и он выполняет сравнение, выдавая исключение в случае несоответствия.

Также обратите внимание, что единственным режимом AEAD, поддерживаемым «нормальной» Java (с поставщиками Sun-now-Oracle и OpenJDK), является GCM (с AES).BouncyCastle также поддерживает CCM, и я не знаю о IBM или других, таких как Android.Ваша ссылка на nodejs-crypto говорит, что она поддерживает только GCM, что удивляет меня, поскольку она использует OpenSSL снизу и поддерживает как GCM, так и CCM начиная с OpenSSL 1.0.1.

Предполагая, что вы используете режим, поддерживаемый с обеих сторон, эти режимы стандартизированы и детерминированы, поэтому, если вы используете тот же ключ, nonce, открытый текст или зашифрованный текст, как применимо, и AAD yes, они будут производить / ожидатьтот же тег и взаимодействовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...