Шифр XOR (Гаммирование)

thmn8

Администратор
Сообщения
1 472
Реакции
311
Сайт
tehadm.ru
Гамми́рование (или Шифр XOR) - метод симметричного шифрования, заключающийся в «наложении» последовательности, состоящей из случайных чисел, на открытый текст. Последовательность случайных чисел называется гамма-последовательностью и используется для зашифровывания и расшифровывания данных. Суммирование, обычно, выполняется в каком-либо конечном поле.

C#:
using System;

public class XORCipher
{
    //генератор повторений пароля
    private string GetRepeatKey(string s, int n)
    {
        var r = s;
        while (r.Length < n)
        {
            r += r;
        }

        return r.Substring(0, n);
    }

    //метод шифрования/дешифровки
    private string Cipher(string text, string secretKey)
    {
        var currentKey = GetRepeatKey(secretKey, text.Length);
        var res = string.Empty;
        for (var i = 0; i < text.Length; i++)
        {
            res += ((char)(text[i] ^ currentKey[i])).ToString();
        }

        return res;
    }

    //шифрование текста
    public string Encrypt(string plainText, string password)
        => Cipher(plainText, password);

    //расшифровка текста
    public string Decrypt(string encryptedText, string password)
        => Cipher(encryptedText, password);
}

class Program
{
    static void Main(string[] args)
    {
        var x = new XORCipher();
        Console.Write("Введите текст сообщения: ");
        var message = Console.ReadLine();
        Console.Write("Введите пароль: ");
        var pass = Console.ReadLine();
        var encryptedMessageByPass = x.Encrypt(message, pass);
        Console.WriteLine("Зашифрованное сообщение {0}", encryptedMessageByPass);
        Console.WriteLine("Расшифрованное сообщение {0}", x.Decrypt(encryptedMessageByPass, pass));       
        Console.ReadLine();
    }
}

programm.top
 
Последнее редактирование:
Назад
Верх Низ