2016-08-12 3 views
0

Вот сделка:Потеря данных при передаче его в 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 является ложным, это просто вызовет ошибку.

+1

** Не используйте DES в настоящее время. ** Он обеспечивает только 56-разрядную защиту. AES будет намного лучше, потому что он более безопасен с минимальным размером ключа 128 бит. Существует также практический предел максимального размера зашифрованного текста с DES. См. [Сравнение безопасности 3DES и AES] (http://security.stackexchange.com/q/26179/45523). –

+0

Спасибо Artjom, я хорошо знаю об этом, однако мне нужно использовать DES на данный момент. – ProTheJoker

ответ

2

API предоставляет вам договор. Одним из свойств контракта является то, что вам нужно позвонить Cipher#final([output_encoding]), когда закончите шифрование. Даже если заполнение не нужно обрабатывать экземпляром Cipher, код написан для повторного использования и, следовательно, ожидает, что он будет использоваться таким же образом, независимо от параметров дополнения.

+0

Спасибо за этот отзыв, я уже думал об этом, прежде чем вы его разместили, и вот-вот должен закрыть вопрос. Дело в том, что в финале предусмотрены мои «пользовательские» дополнения и простыни DES, которые я могу удалить, используя срез и получить то, что я желаю ^^ Спасибо! – ProTheJoker

Смежные вопросы