Набор Алгоритмов

В статье описана начальная концепция симметричных алгоритмов шифрования. В статье рассмотрены основы, что такое симметричное шифрование на примере побитовой операции Xor.

Алгоритмы - Концепция симметричных алгоритмов шифрования

1. Введение

Шифрование — сокрытие данных от посторонних лиц. Алгоритм шифрования предназначен именно для этого.

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

Виды алгоритмов шифрования:

2. Пример реализации концепции шифрования на побитовой опереации XOR (Исключающее Или)

Давайте рассмотрим алгоритм шифрования строки data ключом key.

Чтобы строка стала зашифрованной к каждому символу data (строка) применяется соответствующий символ key (ключ) побитовой операцией "исключающее или". В результате получается зашифрованная строка для передачи (или другова использования. Теперь она является зашифрованной. Чтобы её расшифровать применяется тот же алгоритм с тем же ключом. Расшифрация происходит, т.к. алгоритм работает так: data Xor key Xor key, key Xor key = 0 (равно нулю) по определению побитовой операции исключающего или, а data Xor 0 равно data.

Ключ для всех симметричных алгоритмов шифрования должен хранится в тайне.

Приведём функцию на языке C# для симметричного шифрования, основанной на побитовой операции Xor:


    public static string XorSample(string data, string key)
    {
        if (String.IsNullOrEmpty(data) || String.IsNullOrEmpty(key))
            return data;

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < data.Length; i++)
            sb.Append((char)(data[i] ^ key[(i % key.Length)]));
        String result = sb.ToString();

        return result;
    }

Далее приведём код для тестирования этой функции:


    using System;
    using System.Text;

    namespace Blog_SymmetricEncryptionAlgorithms_XorSample
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Symmetric Encryption Algorithms: XorSample");
                Console.WriteLine("__________________________________________");

                string data = "The string is for a xor encryption test.";
                string key = "sadnfh283ursdf";
                
                Console.WriteLine($"data: {data}");
                Console.WriteLine($"key: {key}");

                Console.WriteLine($"encrypted data : {XorSample(data, key)}");
                Console.WriteLine($"decrypted data: {XorSample(XorSample(data, key), key)}");

                Console.ReadLine();
            }

            public static string XorSample(string data, string key)
            {
                if (String.IsNullOrEmpty(data) || String.IsNullOrEmpty(key))
                    return data;

                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < data.Length; i++)
                    sb.Append((char)(data[i] ^ key[(i % key.Length)]));
                String result = sb.ToString();

                return result;
            }
        }
    }

Результат работы:

Рис. 1. Результат работы Xor-шифрования строк.

3. Известные алгоритмы симметричного шифрования на текущий день (основные)

Конкретные алгоритмы симметричного шифрования вы можете найти в интернете или в профильной литературе, допустим посетите Политехническую библиотеку на Лубянке, там находится большое собрание технической литературы.

4. Заключение

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