Немного о идее

Сегодня исходники по C# скачать бесплатно практически не возможно. Но мне пришла идея разместить исходники программ, что я делал в универе, здесь на сайте. Скачать можно с файлообменника, просто нужно подождать минуту - и вуааля - скачивайте и сдавайте вашему преподавателю, или эксперементируйте с исходниками... Оставляйте комментарии или давайте идеи - буду пробовать написать и выложить исходники. Также планирую в дальнейшем выложить для скачивания исходники по C++. Вообщем пожелайте мне удачи. :)

пятница, мая 21, 2010

Работа со строками и масивами исходники

Задача:
Дан текстовый файл. Считать текст из файла и вывести на экран, поменяв местами 2 соседних слова.



Написал, переделав немного прогу Pooh'a - http://www.cyberforum.ru/csharp-net/thread130233.html.

Логика программы

Все слова разделенные пробелом записываем как отдельный элемент массива splitedText. Потом каждые два элемента меняем местами.

Код
// Что-бы не выйти за границы масива splitedText
// от его длинны отнимаем 2
for (int i = 0; i <= splitedText.Length - 2; i += 2)
   {
   Console.Write(splitedText[i + 1] + " " + splitedText[i] + " ");
   }

Скачать исходники работающей программы - http://rapidgator.net/134281/Text_reader_and_switcher_.rar.html.

четверг, мая 20, 2010

Реализация шифра Цезаря

Вступление

Шифр Цезаря — один из древнейших шифров. При шифровании каждый символ заменяется другим, отстоящим от него в алфавите на фиксированное число позиций. Шифр Цезаря можно классифицировать как шифр подстановки, при более узкой классификации — шифр простой замены.

.


Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки. Естественным развитием шифра Цезаря стал шифр Виженера. С точки зрения современного криптоанализа, шифр Цезаря не имеет приемлемой стойкости.

Пример

Шифрование с использованием ключа k = 3. Буква С «сдвигается» на три буквы вперед и становится буквой «Ф». Твердый знак, перемещённый на три буквы вперед, становится буквой «э», и так далее:

Оригинальный текст:
Съешь же ещё этих мягких французских булок, да выпей чаю.


Шифрованный текст
Фэзыя йз зьи ахлш пвёнлш чугрщцкфнлш дцосн, жг еютзм ъгб.

  Исходный программный код


В программе используется переменная в которой забиты все символы англ. и русского алфавита, знаки препинания, пробел и символ новой строки.

public static string abc = @"`1234567890-=\][poiuytrewqasdfghjkl;'/., mnbvcxzQWERTYUIOPLKJHGFDSAZXCVBNMйцукенгшщзхъэждлорпавыфячсмитьбюЙЦУКЕНГШЩЗХЪЭЖДЛОРПАВЫФЯЧСМИТЬБЮ" + Environment.NewLine;

Символ '@'нужен для отключения '\]' последовательности символов.

Вся логика программы сосредоточена в этой строчке:

Data2 += abc[abc.IndexOf(Data[i]) + key];

В переменную Data2 мы заносим шифрованную букву, которую вычисляем из ключа key.
Пример
Hello world!
Первая буква (при i = 1) - 'H'. Ищем под каким номером она стоит в нашем алфавите abc - abc.IndexOf('H'). Допустим под номером 30. К этому числу + 3 = 33. Дальше присваиваем Data2 += abc[33];

Исходники лежат здесь -
скачать с upload.com.ua - http://upload.com.ua/get/901647108/ и здесь - скачать с rapidgator.net - http://rapidgator.net/133591/Caesar_cipher_implementation.rar.html

вторник, мая 18, 2010

Генератор паролей RNGCryptoServiceProvider

Вступление

Все люди пользуются интернетом. Или вскоре начнут им пользоватся. А зайдя в интернет они полюбому будут ичпользовать сервисы типа почты, одноклассников, интернет магазинов или вебмани (web money). А здесь везде и всюду нужно вписывать свой пароль. А надежный пароль сходу так и не придумаешь. Но если пароль не надежен, то и система где его используют не может считатся надежной.

Надежным пароль считается, когда он:
 - не состоит из простых слов типа "pavel", "armagedon" и др.
 - содержит цифры,
 - содержит знаки препинания,
 - содержит большие и маленькие буквы.

Вот мне и пришла идея использовать стандартные средства C#, что-бы сделать простой генератор паролей. Все преимущества такой программы налицо - нажал на кнопочку - вот тебе надежный пароль, притом в программе можно выбрать любую длину. Потом можно записать его куда-нибудь в надежное место, или просто скинуть в блокнот себе на компе, а файл для надежности закодировать.

Общая инфа

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

Программа выглядит следующим образом:


Все просто - выбираем длину пароля и жмем "Roll Dice".

Программный код (исходники)

Form1.cs

using System;
using System.Windows.Forms;

namespace Char_generator_for_VS2008
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            if (Convert.ToInt32(textBox2.Text) < 35)
            {
                try
                {
                    textBox1.Clear();
                    byte[] temp = Generator.RollDice(Convert.ToInt32(textBox2.Text));
                    for (int i = 0; i < temp.Length; i++)
                    {
                        textBox1.Text += (char)temp[i];
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            else
                MessageBox.Show("Введите число меньше 35!!!");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox2.Text = "16";
        }
    }
}

Мы вызываем метод RollDice() класса Generator. Програмный код этого класса:

Generator.cs

using System.Security.Cryptography;

namespace Char_generator_for_VS2008
{
    class Generator
    {
        public static byte[] RollDice(int passLenght)
        {
            byte[] randomNumber = new byte[passLenght];
            byte[] password = new byte[passLenght];


            // Create a new instance of the RNGCryptoServiceProvider.
            RNGCryptoServiceProvider Gen = new RNGCryptoServiceProvider();

            // Fill the array with a random value.
            Gen.GetBytes(randomNumber);

            for (int i = 0; i < randomNumber.Length; i++)
            {
                if ((int)randomNumber[i] > 48 && (int)randomNumber[i] < 57 ||
                    (int)randomNumber[i] > 65 && (int)randomNumber[i] < 90 ||
                    (int)randomNumber[i] > 97 && (int)randomNumber[i] < 122)
                {
                    password[i] = randomNumber[i];
                }
                else
                {
                    Gen.GetBytes(randomNumber);
                    i--;
                }
            }
            return password;
        }
    }
}

Логика следующая:
- Генерируем число от 0 до 256
- Если сгенерированное число входит в интервалы
от 48 до 57,
от 65 до 90 и
от 97 до 122,
сохраняем его в текстбокс.
В противном случае снова генерируем число от 0 до 256.

Скачать исходники можно здесь - http://upload.com.ua/get/901646946/
или здесь - http://rapidgator.net/133533/Char_generator_for_VS2008.rar.html