В каком криптографическом механизме используются повторные xor? - PullRequest
0 голосов
/ 31 марта 2011

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

#include <stdio.h>
#include <stdlib.h>

int main( int argc, char * argv[] ) {
    long int key;
    char * endptr;

    key = strtol( argv[1], &endptr, 10 );

    srandom( key );
    { /* now copy input to output through crypt transformation */
            char ch;
            while (!feof( stdin )) {
                    putc( (getc(stdin) ^ random())&0xFF, stdout );
            }
            fclose( stdout );
    }
}

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

Я смотрю на следующее:

http://en.wikipedia.org/wiki/Public-key_cryptography

http://en.wikipedia.org/wiki/Block_cipher

http://en.wikipedia.org/wiki/Stream_cipher

http://en.wikipedia.org/wiki/Diffie-Hellman

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

Ответы [ 2 ]

2 голосов
/ 31 марта 2011

Вы должны четко различать в уме шифры по категориям.Существуют:

  • Блочные шифры, которые работают в блоках ввода фиксированного размера
  • Потоковые шифры, которые работают с потоками данных (т.е. по одному байту за раз)

Вышеуказанное отличает только шифры по размеру входных данных, которые они принимают;он не имеет ничего общего с механизмом, который они используют для создания зашифрованного текста.

Что касается этого механизма, мы имеем:

  • Подстановочные шифры
  • Транспозицияшифры
  • и многие другие типы, которые в основном являются комбинациями вышеупомянутого, возможно, со многими итерациями

Поэтому попробуйте сначала ответить на этот вопрос:

твой пример потоковый шифр или блочный шифр?Помните, это не имеет ничего общего с как он шифрует!

2 голосов
/ 31 марта 2011

Это потоковый шифр.Зашифрованный ключ генерируется путем заполнения случайного числа с заданным ключом.

В криптографии потоковый шифр представляет собой шифр с симметричным ключом, в котором биты открытого текста объединяются с потоком битов псевдослучайного шифра (потоком ключей), обычноисключающая или (xor) операция.В потоковом шифре цифры открытого текста шифруются по одной за раз, и преобразование последовательных цифр изменяется во время шифрования.

Вот что вы здесь делаете.key - симметричный ключ, а поток шифрования генерируется методом random ().Вызов srandom (key) гарантирует, что случайный поток будет иметь одинаковое значение, если ваш ключ одинаков.

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