Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2009, 14:06   #1
nec117
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 266
Вопрос Шифрование текста XOR'ом

Доброго времени суток! Подскажите, пожалуйста, как в C# Зашифровать текст из переменно типа стринг ксором?
пробовал
Код:
int key=2;
string text.code;
text = richtextbox1.Text;
code = text^key;
Но данный код выдаёт ошибку, что не может ксорить string и int. Как сделать так, чтобы он читал текст в виде бинарного кода? Или любой другой способ шифрования ксором подскажите, пожалуйста.
nec117 вне форума Ответить с цитированием
Старый 05.12.2009, 15:06   #2
nec117
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 266
По умолчанию

немного видоизменил код.
Код:
for (int i=0; i<text.length; i++)
text[i]=text[i]^key;
но всё равно выдаёт ошибку.
nec117 вне форума Ответить с цитированием
Старый 11.12.2009, 20:36   #3
StuDDenT
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 24
По умолчанию

можно реализовать таким образом:

Код:
int key = 2;
            string text = "String";            
            char[] ctext = text.ToCharArray();

            for (int i = 0; i < ctext .Length ; i++)
                ctext[i] = ((char)(ctext[i] ^ key));
            Console.WriteLine("Исходная строка: " + text);

            text=String .Empty ;
            for (int i = 0; i < ctext.Length; i++)
                text=text.Insert(i, char.ToString(ctext[i]));
            Console.WriteLine("Зашифрованная строка: " + text);
            Console.ReadKey();
StuDDenT вне форума Ответить с цитированием
Старый 11.12.2009, 21:16   #4
nec117
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 266
По умолчанию

StuDDenT

Огромное спасибо за пример! Уже всё перепробовал, но так и не смог добиться нужного результата, но теперь всё получилось
nec117 вне форума Ответить с цитированием
Старый 16.12.2009, 16:44   #5
Arnezami
Форумчанин
 
Регистрация: 04.10.2009
Сообщений: 147
По умолчанию

xor простое решение для шифрование, но легко расшифровать его... используй AES, с ключём, супер надёжность!!! Могу выложить исходники готовых функций для C#
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558
Arnezami вне форума Ответить с цитированием
Старый 18.12.2009, 13:45   #6
nec117
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 266
По умолчанию

Ооо. это интересно, выложи, пожалуйста
nec117 вне форума Ответить с цитированием
Старый 22.12.2009, 17:51   #7
Arnezami
Форумчанин
 
Регистрация: 04.10.2009
Сообщений: 147
По умолчанию

Пожалуйста, вот ссылка: AES шифрование (Visual Studio cs File)
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558
Arnezami вне форума Ответить с цитированием
Старый 22.12.2009, 17:52   #8
Arnezami
Форумчанин
 
Регистрация: 04.10.2009
Сообщений: 147
По умолчанию

У кого проблемы с рапидой, код:

Код:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace COM.NET_ASSISTANT.CnClass.Cryptografy.AES
{
    public class AESEncryption
    {
        public static string Encrypt(string PlainText, string Password, string Salt, string HashAlgorithm, int PasswordIterations, string InitialVector, AESKeySize keySize)
        {
            byte[] InitialVectorBytes = Encoding.ASCII.GetBytes(InitialVector);
            byte[] SaltValueBytes = Encoding.ASCII.GetBytes(Salt);
            byte[] PlainTextBytes = Encoding.UTF8.GetBytes(PlainText);
           
            PasswordDeriveBytes DerivedPassword = new PasswordDeriveBytes(Password, SaltValueBytes, HashAlgorithm,
                                                                          PasswordIterations);
#pragma warning disable 618,612 //А фиг его что это решарпер ругаитсо вот и поставил это...))
            byte[] KeyBytes = DerivedPassword.GetBytes(GetKeySize(keySize) / 8);
#pragma warning restore 618,612
            RijndaelManaged SymmetricKey = new RijndaelManaged();
            SymmetricKey.Mode = CipherMode.CBC;
            ICryptoTransform Encryptor = SymmetricKey.CreateEncryptor(KeyBytes, InitialVectorBytes);
            MemoryStream MemStream = new MemoryStream();
            CryptoStream CryptoStream = new CryptoStream(MemStream, Encryptor, CryptoStreamMode.Write);
            CryptoStream.Write(PlainTextBytes, 0, PlainTextBytes.Length);
            CryptoStream.FlushFinalBlock();
            byte[] CipherTextBytes = MemStream.ToArray();
            MemStream.Close();
            CryptoStream.Close();
            return Convert.ToBase64String(CipherTextBytes);
        }

        /// <summary>
        /// Метод - расшифровщик AES ключа
        /// </summary>
        /// <param name="CipherText">выходные данные алгоритма шифрования</param>
        /// <param name="Password">Пароль</param>
        /// <param name="Salt"></param>
        /// <param name="HashAlgorithm"></param>
        /// <param name="PasswordIterations"></param>
        /// <param name="InitialVector"></param>
        /// <param name="keySize"></param>
        /// <returns></returns>
        public static string Decrypt(string CipherText, string Password, string Salt, string HashAlgorithm, int PasswordIterations, string InitialVector, AESKeySize keySize)
        {
            byte[] InitialVectorBytes = Encoding.ASCII.GetBytes(InitialVector);
            byte[] SaltValueBytes = Encoding.ASCII.GetBytes(Salt);
            byte[] CipherTextBytes = Convert.FromBase64String(CipherText);

            PasswordDeriveBytes DerivedPassword = new PasswordDeriveBytes(Password, SaltValueBytes, HashAlgorithm, PasswordIterations);
#pragma warning disable 618,612
            byte[] KeyBytes = DerivedPassword.GetBytes(GetKeySize(keySize) / 8);
#pragma warning restore 618,612
            RijndaelManaged SymmetricKey = new RijndaelManaged();
            SymmetricKey.Mode = CipherMode.CBC;
            ICryptoTransform Decryptor = SymmetricKey.CreateDecryptor(KeyBytes, InitialVectorBytes);
            MemoryStream MemStream = new MemoryStream(CipherTextBytes);
            CryptoStream cryptoStream = new CryptoStream(MemStream, Decryptor, CryptoStreamMode.Read);
            byte[] PlainTextBytes = new byte[CipherTextBytes.Length];
            int ByteCount = cryptoStream.Read(PlainTextBytes, 0, PlainTextBytes.Length);
            MemStream.Close();
            cryptoStream.Close();
            return Encoding.UTF8.GetString(PlainTextBytes, 0, ByteCount);
        }

        private static int GetKeySize(AESKeySize value)
        {
            switch (value)
            {
                case AESKeySize.BYTESIZE_128:
                    {
                        return 128;
                    }break;
                case AESKeySize.BYTESIZE_192:
                    {
                        return 192;
                    } break;
                case AESKeySize.BYTESIZE_256:
                    {
                        return 256;
                    }
                default:
                    break;
            }
            return 0;
        }
    }

    public enum AESKeySize
    {
        BYTESIZE_128,
        BYTESIZE_192,
        BYTESIZE_256
    }
}
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558
Arnezami вне форума Ответить с цитированием
Старый 22.12.2009, 17:53   #9
Arnezami
Форумчанин
 
Регистрация: 04.10.2009
Сообщений: 147
По умолчанию

пространство имён только замени))
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558
Arnezami вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Побуквенное шифрование текста! Gauss Общие вопросы Delphi 11 23.08.2013 19:14
шифрование Рахимжан Помощь студентам 5 29.11.2009 22:33
Шифрование текста по методу Цезаря с лозунгом (с ключевым словом) SASHA19 Помощь студентам 3 11.10.2009 15:18
Шифрование\дешифрование текста на Паскале smoke007 Помощь студентам 2 17.10.2008 11:34
Шифрование текста SoundMan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 15.08.2008 22:39