Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/57: Рейтинг темы: голосов - 57, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 20.01.2011
Сообщений: 18

Удобное и безопасное хранение паролей

14.03.2011, 20:31. Показов 11039. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Изучаю C#, знаю его совсем чуть чуть, можно сказать, только синтаксис.
Хочу написать софт для себя, цель: Удобное хранение паролей. Помогите составить(т.е. как лучше написать, что использовать?) программу, с безопасным хранением ключей (хотя бы чтобы пароли не открывались через блокнот ).
Функционал:
В БД(бд должна быть на файлах) 4 колонки: логин, пароль, примечание, кол-во просмотров этого пароля.
В программе выводятся все пароли удовлетворяющие фильтру, если фильтр пустой, выводятся все пароли. Если в текстовом поле фильтра есть текст, идёт поиск по всем паролям и выводятся пароли только удовлетворяющие фильтру (т.е. только пароли у которых в логине или пароле или примечании содержится текст из фильтра).
Вывод паролей сортируется по кол-во просмотров, по убыванию.
Пароль считается просмотренным, если его скопировали, т.е. надо увеличивать счётчик просмотров.

В общем прошу вас помочь мне разобраться, как лучше писать и прочее, мб уже есть готовые решения.....
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.03.2011, 20:31
Ответы с готовыми решениями:

Безопасное хранение данных в ОЗУ
Всем привет. Пишу что-то вроде шифровальной программы. Возник вопрос. Пользователь запрашивает данные, программа их расшифровывает и...

Обеспечить безопасное хранение паролей
Вчера я хотел создать простую программу для себя (я заинтеровался программированием) В этой программе хранятся пароли но чтобы их увидеть...

Обеспечить безопасное хранение паролей
Всем известная ситуация: зарегистрировался на сайте, долго не посещал его, потом понадобилось зайти - не могу вспомнить ни логин ни пароль....

8
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
14.03.2011, 21:00
Цитата Сообщение от GiSEG Посмотреть сообщение
хотя бы чтобы пароли не открывались через блокнот ).
для этого можете использовать хранение паролей в зашифрованом файле.
Для шифрования используйте криптографию
0
 Аватар для Димон_
136 / 104 / 9
Регистрация: 30.01.2011
Сообщений: 699
14.03.2011, 21:51
базы данных надо отдельно изучать. Поиск по фильтру либо регулярные выражения(не очень нужно в данном случае), либо через сравнение строк. Шифровать:минимум в бинарник+ свой собственный алгоритм, либо как написано выше. Реализовать"свою базу данных" неочень сложно. Но почитать надо о циклах, строках, рег.выражениях(желательно), system.io, но и методы...классы.
П.С. Пишу все что может пригодится. Сам хм....базу делал. Забросил к вечеру, работает, но довольно через ж###.
0
0 / 0 / 0
Регистрация: 20.01.2011
Сообщений: 18
14.03.2011, 21:59  [ТС]
Я думаю писать свою бд для софта на 1-го человека слишком крутая задача. Я планировал хранить пароли в зашифрованном виде, в каком нибудь формате, и обрабатывать их как текст....
0
 Аватар для Димон_
136 / 104 / 9
Регистрация: 30.01.2011
Сообщений: 699
14.03.2011, 22:14
да одно название от бд))) просто обработка такоим образом:
1)расшифровывания
2)поиск доп.элементов
3)обработка по этим элементам(разбивка на строки, в моем случае кусок строки между "//" и "\\" добавлялся в гроупбокс(несразу сначало проверка дальше чтобы точно ошибок небыло))
4) редактирование в пользовательском интерфейсе
5) все в обратном порядке+сохранение(доп. Символы сама прога пишет конечно)
0
146 / 130 / 27
Регистрация: 20.12.2010
Сообщений: 242
15.03.2011, 11:39
может поможет ковыряние в исходниках keepass ?

http://keepass.info/download.html
http://downloads.sourceforge.n... 18-Src.zip
или
http://downloads.sourceforge.n... Source.zip
0
 Аватар для Smekalisty
42 / 42 / 7
Регистрация: 23.04.2010
Сообщений: 93
15.03.2011, 12:07
База данных в 1 файле называется embedded db \ встраиваемая бд (например SQLite, FireBird - бесплатные)
Нужно хранить хеш пароля - поэтому записать его можно в txt или xml
C#
1
2
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
SHA1CryptoServiceProvider SHA1 = new SHA1CryptoServiceProvider();
Фильтры - это уже нужно конкренто смотреть (что-куда, как)
0
 Аватар для bugagenko
1 / 1 / 0
Регистрация: 12.02.2011
Сообщений: 7
15.03.2011, 22:42
Можно сделать файл с сериализованной коллекцией паролей, а файл шифровать по ключу, генерируемому из пароля.
Про то как сохранить объект в XML или бинарном файле написано тут.
Кстати, по случайности я тоже планирую делать похожую программу в качестве курсовой (:
0
1 / 1 / 0
Регистрация: 23.10.2011
Сообщений: 49
03.06.2012, 00:18
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
public static string Coding(string password)     //процедура "Шифрование". используем шифр Виженера.
        {
            string key = "vtyzpjdenbujhm";
            string all = @"`1234567890-=~!@#$%^&*()_+qwertyuiop[]QWERTYUIOP{}asdfghjkl;'\ASDFGHJKL:""|ZXCVBNM<>?zxcvbnm,./№ёЁйцукенгшщзхъЙЦУКЕНГШЩЗХЪфывапролджэФЫВАПРОЛДЖЭячсмитьбюЯЧСМИТЬБЮ";//все символы, которые могут быть использовани при вводе пароляя
            string st; int center;                           //объявление новых переменных.
            string leftSlice, rightSlice, cPass = "";
 
            if (key.Length > password.Length)               //если длина строки пароля (ключа для входа в программу и для шифрования)>длины строки пароля (какого-либо сайта и т.д.),
            {
                key = key.Substring(0, password.Length);    //то переменная key обрежется и станет равной длинне пароля 
            }
            else                                            // Иначе повторять ключ (ключключключклю), пока не станет равным длинне пароля
                for (int i = 0; key.Length < password.Length; i++)
                {
                    key = key + key.Substring(i, 1);
                }
            //основной цикл шифрования
            for (int i = 0; i < password.Length; i++)
            {//находим центр строки all (центр - это будущий первый символ строки со сдвигом)
                center = all.IndexOf(key.Substring(i, 1));
                leftSlice = all.Substring(center); //берем левую часть будущей строки со сдвигом
                rightSlice = all.Substring(0, center);// затем правую
                st = leftSlice + rightSlice;// формируем строку со сдвигом
                center = all.IndexOf(password.Substring(i, 1));// теперь в переменную center запишем индекс очередного символа шифруемой строки
                cPass += st.Substring(center, 1);    //поскольку индексы символа из строки со сдвигом и из обычной строки совпадают, то нужный нам символ берется по такому же индексу
            }
 
            return cPass;
        }
 
      public  static string Uncoding(string password)        //процедура "Расшифрование"
        {
            string key = "vtyzpjdenbujhm";
            // строка all содержит все символы, которые можно вводить с русской и англ раскладки клавиатуры
            string all = @"`1234567890-=~!@#$%^&*()_+qwertyuiop[]QWERTYUIOP{}asdfghjkl;'\ASDFGHJKL:""|ZXCVBNM<>?zxcvbnm,./№ёЁйцукенгшщзхъЙЦУКЕНГШЩЗХЪфывапролджэФЫВАПРОЛДЖЭячсмитьбюЯЧСМИТЬБЮ";
            //строка st со сдвигом по ключу (в качестве ключа используем наш пароль для входа)
            string st; int center; // центр указывает на индекс символа, до которого идет сдвиг по ключу.
            string leftSlice, rightSlice, cPass = ""; //leftSlice, rightSlice - правый срез, левый срез. из них составляется строка со сдвигом st. 
 
            //если пароль короче ключа - обрезаем ключ
            if (key.Length > password.Length)
            {
                key = key.Substring(0, password.Length);
            }
            //Иначе повторяем ключ, пока он не примет длинну пароля.
            else
                for (int i = 0; key.Length < password.Length; i++)
                {
                    key = key + key.Substring(i, 1);
                }
            // основной цикл расшифрования.
            for (int i = 0; i < password.Length; i++)
            {
                //находим центр строки all (центр - это будущий первый символ строки со сдвигом)
                center = all.IndexOf(key.Substring(i, 1));
                leftSlice = all.Substring(center); //берем левую часть будущей строки со сдвигом
                rightSlice = all.Substring(0, center);// затем правую
                st = leftSlice + rightSlice; // формируем строку со сдвигом
                center = st.IndexOf(password.Substring(i, 1)); // теперь в переменную center запишем индекс очередного символа расшифроввываемой строки
                cPass += all.Substring(center, 1); //поскольку индексы символа из строки со сдвигом и из обычной строки совпадают, то нужный нам символ берется по такому же индексу
            }
            return cPass; //возвращаем расшифрованный пароль.
        }
    }
Вот этим методом шифровал и дешифровал пароли у себя в xml файле. Если интересно могу скинуть код программы которую написал сам, тоже хранение паролей)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.06.2012, 00:18
Помогаю со студенческими работами здесь

Безопасное хранение файлов или безопасное подключение к БД
Возник такой вопрос. Подключение к БД делаю с помощью include который загружает файл содержащий строку подключения с логином и паролем....

Удобное хранение значений
Доброго вечера! Допустим в директории программы есть файл translates.txt, содержимое которого похожая на INI файл, но не совсем. На каждой...

Удобное хранение данных в python
Пишу программу, которая анализирует определённые действия. Проблема в том, я не знаю как лучше хранить результаты анализа (не в .txt же их...

Безопасное антихакерское введение паролей в Windows 7
Привет всем продвинутым (и не очень). Вопрос про безопасность паролей и файл-паролей. Вопрос такой : Если взять файл.txt весом 1Гб и...

Удобное хранение тела одного JS сценария в функции внутри другого
Что бы не хранить код будущего сценария в виде строки:) var W = new ActiveXObject('WScript.Shell'); var F = new...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru