Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/50: Рейтинг темы: голосов - 50, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 18.02.2010
Сообщений: 7
1
.NET 2.x

Зашифровать строку

12.03.2010, 14:17. Показов 9570. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Итак имеется задача:
В приложении водится пароль, есть опция запоминания пароля.
Запоминание пароля введется путем записи в xml файл, с последующим чтением с него же.
На данный момент пароль хранится в открытом виде.
Какими средствами можно реализовать?
П.С. Хранение в реестре не предлагать, такова специфика.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2010, 14:17
Ответы с готовыми решениями:

Побитово зашифровать и сохранить файл
Всем привет! Такая проблема: Есть набор битов, нужно создать новый файл, который будет в виде этих...

Как зашифровать (обфускатор) код в c#?
Здравствуйте, пишу немного на c# WPF, идет полная привязка программы к серверу, т.е. основные...

Как зашифровать пароль?
Народ, привет. Есть окна регистрации и авторизации, при регистрации пароль должен шифроваться и...

Можно ли как-то зашифровать файл?
В своей программе я создаю файл с какой-то информацией(Editor). Но мне нужно сделать так что-бы его...

8
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
12.03.2010, 14:34 2
Самый элементарный способ:
Шифровать XORом обычным. Результат переводить в шестнадцатиричную запись (ибо могут получаться непечатные символы и даже символ конца строки (ноль)).
Шестнадцатиричную запись хранить.
при считывании расшифровывать в обратном порядке.

З.Ы. C# не владею, потому не могу исходник написать.

Добавлено через 7 минут
На С++ в Qt это выглядит так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
QString EncodePass(const QString &data)
{
    QString res=data;
    char ch,mask=90;
    for(int i=0;i<res.length();i++)
    {
        ch=res[i].toAscii();
        res[i]=ch^mask;
    }
    QByteArray bar=res.toAscii();
    res=bar.toHex();
    return res;
}
 
QString DecodePass(const QString &data)
{
    QByteArray barHex=data.toAscii();
    QByteArray res=QByteArray::fromHex(barHex);
    char ch,mask=90;
    for(int i=0;i<res.length();i++)
    {
        ch=res[i];
        res[i]=ch^mask;
    }
    return res;
}
0
118 / 119 / 20
Регистрация: 21.01.2010
Сообщений: 252
12.03.2010, 15:07 3
Классика: Хранить не сами пароли, а их хэши. Но зависит от общей логики приложения, может такой метод и не подойдет.
0
92 / 79 / 9
Регистрация: 10.03.2010
Сообщений: 172
12.03.2010, 15:25 4
честно стырено из интернета
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    class Program
    {
        public static void Main()
        {
            Console.WriteLine("Введите пароль для кодировки");
            string password = Console.ReadLine();
            Console.WriteLine("хэш MD5 пароля");
            Console.WriteLine(GetMD5Hash(password));
            Console.Read();
        }
        public static string GetMD5Hash(string input)
        {
            System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
            bs = x.ComputeHash(bs);
            System.Text.StringBuilder s = new System.Text.StringBuilder();
            foreach (byte b in bs)
            {
                s.Append(b.ToString("x2").ToLower());
            }
            string password = s.ToString();
            return password;
        }
   }
"Шифруешь" пароль, получаешь хэш, его сохраняешь. Потом когда пользователь вводит пароль, то его "шифруешь" и сравниваешь с полученным ранее хэшом
2
1 / 1 / 0
Регистрация: 18.02.2010
Сообщений: 7
12.03.2010, 16:05  [ТС] 5
Цитата Сообщение от _Art_ Посмотреть сообщение
Классика: Хранить не сами пароли, а их хэши. Но зависит от общей логики приложения, может такой метод и не подойдет.
В том то и дело что не подходит, пароль должен "подхватываться".
Floating
md5 не подходит, легко брутабельный
Delphin_KKC
Спсибо посмотрю, но пока остановился на Rijndael.
0
92 / 79 / 9
Регистрация: 10.03.2010
Сообщений: 172
12.03.2010, 16:41 6
Цитата Сообщение от Bart. Посмотреть сообщение
В том то и дело что не подходит, пароль должен "подхватываться".
Floating
md5 не подходит, легко брутабельный
Delphin_KKC
Спсибо посмотрю, но пока остановился на Rijndael.
Подборка брутфостом возможна при любом типе шифрования. MD5 не более уязвим чем другие методы шифрования. За то в отличие от других методов шифрования даже если кто то получит "шифрованный" пароль, он не сможет из него восстановить сам пароль.
0
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
12.03.2010, 16:42 7
Цитата Сообщение от Bart. Посмотреть сообщение
md5 не подходит, легко брутабельный
А SHA512?
Цитата Сообщение от Bart. Посмотреть сообщение
Delphin_KKC
Спсибо посмотрю, но пока остановился на Rijndael.
Это лучше. Потому что XOR - это самый элементарный шифр, который может спасти разве что от начинающего.
Но для простых программ (наподобие той, где я это использовал) мощное шифрование и не нужно.

Добавлено через 1 минуту
Цитата Сообщение от Floating Посмотреть сообщение
Подборка брутфостом возможна при любом типе шифрования. MD5 не более уязвим чем другие методы шифрования. За то в отличие от других методов шифрования даже если кто то получит "шифрованный" пароль, он не сможет из него восстановить сам пароль.
Есть программы, подбирающие пароли по мд5 хешу. Скорость перебора - сотни тысяч комбинаций в секунду. А на современных компах мож и быстрее.
1
92 / 79 / 9
Регистрация: 10.03.2010
Сообщений: 172
12.03.2010, 18:34 8
Цитата Сообщение от Delphin_KKC Посмотреть сообщение
А SHA512?
Есть программы, подбирающие пароли по мд5 хешу. Скорость перебора - сотни тысяч комбинаций в секунду. А на современных компах мож и быстрее.
А при Rijndael вообще ключ в программе приходится хранить
0
1 / 1 / 0
Регистрация: 18.02.2010
Сообщений: 7
12.03.2010, 19:31  [ТС] 9
Цитата Сообщение от Floating Посмотреть сообщение
А при Rijndael вообще ключ в программе приходится хранить
И что здесь такого?
Чтобы не возникало вопросов немного поясню логику программы.
Само приложение представляет из себя клиент и подключается к серверу для своих нужд.
Есть текстовое поле, логин и пароль, вовремя подключения пароль шифруется по своим алгоритмам.
В проге есть галка сохранять пароль, пароль сохраняется в ini файле, до сегодня хранился в открытом виде. Моя задача была такая. Взять пароль с текстбокса зашифровать и положить в файл, при следушем запуске взять хеш расшифровать и подставить значение в текстбокс. Вот в принципе и всё.
0
12.03.2010, 19:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2010, 19:31
Помогаю со студенческими работами здесь

Правильно зашифровать строку чтоб потом можно было ее сверить с шифрованной строкой из БД
Здравствуйте. Вот моя проблема: После регистрации на сайте (посредством Membership) данные...

Зашифровать введенную с клавиатуры строку
Зашифровать введенную с клавиатуры строку заменой исходных символов на символы с кодом, большим на...

Зашифровать строку перестановкой символов
Написать код программы на С#. Дана строка-предложение. Зашифровать ее, поместив вначале все...

Зашифровать строку, переместив символы
Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru