Вот сделка:Потеря данных при передаче его в Cipher.update при использовании DES (Node.js)
У меня есть буфер данных структурированных следующим образом:
[39 bytes of header] + [body] + [padding]
(рассчитывается мной). Если я сохраню его в файле, я действительно смогу распознать структуру, и все будет хорошо.
Тогда я должен DES-CBC шифровать этот буфер, и то, что я делаю, это
а) Инстанцировать обертку DES, который имеет ключ, и вычисляет новый IV (autoPadding: ложное на Cipher объект он создает, тоже)
б) Передать буфер в DES обертка
с) буфер затем получает зашифрованы следующим образом: (данные буфер, еп шифра объекта)
var buf1 = en.update(data);
Когда я вывод buf1
на файл (а затем, в моем случае, в сокете) и получить его байты, а затем расшифровать его. Я получаю следующую структуру: [header][body]
Но когда я выводю данные на файл и извлекаю его байты, я получаю исходную структуру. Я знаю, что я также должен добавить en.final()
в buf1
, но в моем случае мне не нужны эти значения, также если autoPadding является ложным, это просто вызовет ошибку.
** Не используйте DES в настоящее время. ** Он обеспечивает только 56-разрядную защиту. AES будет намного лучше, потому что он более безопасен с минимальным размером ключа 128 бит. Существует также практический предел максимального размера зашифрованного текста с DES. См. [Сравнение безопасности 3DES и AES] (http://security.stackexchange.com/q/26179/45523). –
Спасибо Artjom, я хорошо знаю об этом, однако мне нужно использовать DES на данный момент. – ProTheJoker