алгоритм подстановки


Как выполнить алгоритм шифрования подстановки в ASP.NET используя код C#?

Пожалуйста, предоставьте мне пример синтаксиса кода....

2 2

2 ответа:

На самом деле ROT13 является вариантомшифра Цезаря , идея которого заключается в том, чтобы переместить букву обычного текста на N позиций дальше в алфавите. Ни алгоритма ROT13 или шифр Цезаря является безопасным. Почему?

В основном можно определить силу шифрования как объем работы, которую необходимо выполнить для взлома данного зашифрованного текста. Так что же мы должны сделать, чтобы сломать их ? :

  • ROT13 - > мы просто сдвигаем назад каждый символ на 13 позиций в алфавите. (Никакой безопасности вообще).
  • Цезарь шифр ->
    for N=1 to 26 do:
        shift each character by N positions back in the alphabet.
        If a lot of common English words (the, and, that,...) - encryption is cracked.
    Так что в случае Цезаря еще 26 итераций для взлома зашифрованного текста-это настолько малое число, что мы можем смело утверждать, что шифр Цезаря также не имеет защиты. (Но, конечно, это немного лучше, чем ROT13).

Если вы хотите немного более полезный шифр подстановки - тогда используйте шифр Вигенера. В отличие от шифров ROT13/Caesar-шифр Вигенера не использует фиксированный алфавит в операции шифрования. (Он использует несколько алфавитов по переключение их в требуемом порядке). Вот почему Вигенер более надежен, чем РОТ13/Цезарь. Еще Виженера-это слабое шифрование и сопоставима с гаммирования шифрование. Почему Виженера слабо ? В основном потому, что он уязвим для частотного анализа (Конечно, сначала нужно угадать/найти длину ключа). Вот он vigenere C# code (вместе с Caesar/ROT13).

Удачи!

StringBuilder encryptedBuilder = new Stringbuilder();

for(int i = 0; i < key.Length; i++) {
    char e = getCharFor(key[i]); // this does substitution - implement this
    encryptedBuilder.Append(e);
}

string encryptedString = encryptedBuilder.ToString();