2013-10-01 3 views
0

Хорошо, прежде чем вы, ребята, выговорите меня: я знаю, что это ужасный код и супер слабый шифр. Я просто пытаюсь выяснить следующие квалифицируется быть блочным шифром (даже очень рудиментарный и слабым)Может ли этот код быть блочным шифром

int main(){ 
    int mac = 123; 
    int key = 789; 

    int enc = mac^key; 
    printf("encrypted text = %d\n",enc); 

    int plain = enc^key; 
    printf("decrypted text = %d\n",plain); 

    return 0; 
} 

Вот результат:

encrypted text = 878 
decrypted text = 123 
+1

Если ключ состоит из совершенно случайных бит и не используется повторно, это на самом деле реализация [одноразового пула] (http://en.wikipedia.org/wiki/One-time_pad), а не блочный шифр. –

+0

Если бы это был алгоритм, а не пример, это мог быть блочный шифр. Но это может быть просто одноразовый блокнот или что-то еще. –

+0

как насчет того, если бы я был разделен на каждую цифру макроса, а затем делал то же, что и выше. Это будет тот же результат. Однако теперь я разбиваю их на «блоки» отдельных цифр и делаю XOR, а затем рекомбинирую их на другом конце. – sukhvir

ответ

5

Есть определенные обобщения, которые должны для создания блочного шифрования. Код, который вы показали , технически не является блочным шифром. Общие положения, такие как:

  • В блочном шифре сообщение разбивается на блоки, каждый из которых затем зашифрована (т.е. как замещение на очень большие символах - 64-бит или более)
  • Блок-шифр состоит из двух парных алгоритмов, один для шифрования, E и другого для дешифрования, E-1. Оба алгоритма принимают два входа: входной блок размера n бит и ключ размера k бит, что дает n-разрядный выходной блок. Для любого фиксированного ключа дешифрование является обратной функцией шифрования.

Шифрование в режиме блочных шифров (ECB, CBC) использует определенный поток:

  • Первое, что блочный шифр должен сделать разорвать открытого текста в одинаковых по размеру блоков, как правило, 8 байты, например кодирование ASCII imablock.
  • Шифрование открытого текста с использованием шифрования.
  • Расшифруйте сообщение.

Выбор шифрования зависит от реализации.

Точка, , в то время как вы, возможно, следовали за потоком для шифрования-дешифрования, программа не удовлетворяет общности блочных шифров. Вам необходимо разбить ваше сообщение на блоки для реализации symmetric cipher.

Что вы реализовали, является простой шифрования и не блочные шифры.

Есть так много ссылок:

  • Block Ciphers - аккуратные и чистые объяснения для блочных шифров и связанных с ними операций.
  • Wikipedia - Block Ciphers - Очевидная справка ..: P

Надеется, что это помогает.:)

+0

большое спасибо .. это обосновывает аргумент, который у меня был с моим другом над этим кодом – sukhvir

+0

Hahaha. Друзья huh ..: P .. Рад помочь. :) – user2339071

+0

+1 удалил некоторые блоки кода, которые были использованы для выделения, и добавил некоторые незначительные разъяснения. Чтобы быть точным, блок-шифр может только шифровать/дешифровать один блок, разделение в блоках обычного текста является чисто частью [режима блочного шифрования] (http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation) , –

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