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

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

14.03.2011, 20:31. Показов 11087. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru