SlowAES разрешает / поддерживает заполнение нулями? - PullRequest
3 голосов
/ 01 апреля 2011

Я пытаюсь выполнить шифрование AES в режиме CBC с нулевым заполнением. Кто-нибудь знает, поддерживает ли aesSlow заполнение нулями? Основываясь на моем чтении кода, это не так, и если это так; Кто-нибудь может сказать мне, почему?

Я использую сторонний API, который требует этот метод шифрования.

jsfiddle.net / NMATS / 2 - это мой текущий POC. Я перенесу его на узел после его отладки. Кроме того, входы аналогичны, но отличаются для безопасности.

Ура, Denis

1 Ответ

1 голос
/ 01 апреля 2011

Похоже, вы правы.Похоже, использовать PKCS7.В этом случае вы можете выбрать следующие параметры:

  1. Добавьте его к нулю самостоятельно и отмените последний блок зашифрованного текста
  2. Отредактируйте код и заставьте функцию заполнения заполнять нулями (остерегайтесь лицензионных ограничений -Я не смотрел на лицензию)

Что касается того, почему, я думаю, у них просто не было необходимости делать это или времени для ее реализации.

Если вы выберете вариант 1, PKCS7 добавляет полный блок размером 0x10 байт, если ваш открытый текст уже кратен размеру блока.Таким образом, вы можете просто заполнить свой открытый текст байтами 0x00, чтобы сделать его кратным размеру блока, и зашифровать его.Затем вы бы отбросили последние 128-бит шифротекста (то есть всего 16 байтов зашифрованного 0xFF).В итоге вы получите совместимый результат.

Если вы выберете вариант 2, я не уверен, какую реализацию вы используете, но я думаю, что все они достаточно просты.

Здесьэто функция заполнения для реализации Javascript:

    padBytesIn: function(data) {
            var len = data.length;
            var padByte = 16 - (len % 16);
            for (var i = 0; i < padByte; i++) {
                    data.push(padByte);
            }
    },

Вот что вы могли бы изменить на:

    padBytesIn: function(data) {
            var len = data.length;
            if( len % 16 > 0 ){
                var padLen = 16 - (len % 16);
                for (var i = 0; i < padLen; i++) {
                        data.push(0);
                }
            }
    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...