быстрое шифрование для большого текстового файла Unicode - PullRequest
0 голосов
/ 12 марта 2011

У меня большой текстовый файл в формате Юникод (35 МБ), содержащий слова, разделенные знаками препинания. Мне нужно как-то скрыть содержимое файла (по крайней мере, от большинства людей, которые не специализируются на взломе).

Лучший способ до сих пор казался шифрованием. Я почти ничего не знаю о шифровании. Я пытался использовать решение аналогичного вопроса «Простое двухстороннее шифрование для C #», но для выполнения шифрования требуется много времени.

Какой самый быстрый способ (алгоритм) работает из коробки (то есть он содержится в .Net lib)? Короткий пример того, как его использовать, было бы неплохо :) Мне все равно, насколько сильным является шифрование, если вы открываете зашифрованный файл с помощью текстового редактора и не видите слов, тогда все идеально. Важной частью является скорость.

Ответы [ 3 ]

3 голосов
/ 12 марта 2011

AES все еще довольно быстр, вот некоторая помощь в его реализации: Использование шифрования AES в C #

Все, кроме отраслевого стандарта Encryption, рано или поздно требует проблем.

0 голосов
/ 12 марта 2011

Как сказал Тиллерий

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

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

`using System;
using System.Text;</p>

<p>namespace MyEncriptionNameSpace
{
    class XorStringEncripter
    {
        private string __passWord;
        public XorStringEncripter(string password)
        {
            if (password.Length == 0)
            {
                throw new Exception("invalide password");
            }
            __passWord = password;
        }
        public string encript(string stringToEncript)
        {
            return __encript(stringToEncript);
        }</p>

<code>    public string decript(string encripTedString)
    {
        return __encript(encripTedString);
    }

    public string __encript(string stringToEncript)
    {
        var encriptedStringBuilder = new StringBuilder(stringToEncript.Length);
        int positionInPassword = 0;

        for (int i = 0; i < stringToEncript.Length; i++)
        {
            __corectPositionInPassWord(ref positionInPassword);
            encriptedStringBuilder.Append((char)((int)stringToEncript[i] ^ (int)__passWord[positionInPassword]));
            ++positionInPassword;
        }
        return encriptedStringBuilder.ToString();
    }

    private void __corectPositionInPassWord(ref int positionInPassword)
    {
        if (positionInPassword == __passWord.Length)
        {
            positionInPassword = 0;
        }
    }
}
</code>

} `

на самом деле encript и decript делают одно и то же, я предоставил bouth, чтобы избежать путаницы при использовании одной и той же функции для bouth encription и deceries. Это потому, что если у вас есть номер A, и вы переписываете его с помощью B, и вы получаете C, тогда, если вы переписываете C и B, вы получаете A.
A xor B = C ---> C xor B = A

0 голосов
/ 12 марта 2011

Что вы пробовали до сих пор?Являются ли стандартные методы шифрования, такие как AES и Blowfish, слишком медленными?

Вы всегда можете сделать что-то простое, например, скопировать содержимое с помощью некоторого пароля, повторяемого до той же длины, что и файл.

...