Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
1
.NET 4.x

Добавить файл в ресурсы в готовой программе

16.09.2016, 18:59. Показов 1853. Ответов 25

Author24 — интернет-сервис помощи студентам
Здравствуйте, наверное глупый вопрос, но все таки хотелось бы уточнить.
Можно ли в скомпилированном exe добавить какой либо файл в ресурсы?

P.s. Суть в том, что я написал программу запоминания паролей, шифрованные данные в данный момент хранятся в файлах.
Происходит это так: в программе я нажимаю "добавить" и ввожу какой либо "логин:пароль", потом шифрую этот текст и сохраняю в файл, после чего наименования всех таких сохраненные файлов я отображаю в форме listview. Хотелось бы придать мобильности программке и не таскать за собой кучу файлов с паролями.

Если есть хорошие идеи реализации мобильности, буду благодарен если поделитесь
P.s. В дальнейшем хочу сделать облачное хранилище, чтобы все данные подгружались с сервера, но это уже другая история..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2016, 18:59
Ответы с готовыми решениями:

CodeDOM. Как поместить файл в ресурсы и как добавить ссылку на сборку из ресурсов?
Здравствуйте, у меня есть функция которая собирает программу из исходного кода на c# public void...

Как реализовать обработку исключений в двух функциях в готовой программе?
Здравствуйте, прошу помощи т.к сам не состоянии. Имеются две функции одна скачивает архив с сайта...

Добавить dll в ресурсы, потом выгружать в папку с программой
Здравствуйте. Не хочу делать инсталятор программы, т.к. у программы есть всего 1 зависимый dll...

Ресурсы в отдельный файл
Есть некоторое количество аудиофайлов, которые не часто используются, но много весят из-за .wav ...

25
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,271
Записей в блоге: 9
17.09.2016, 02:28 2
Цитата Сообщение от Nalik Посмотреть сообщение
не таскать за собой кучу файлов
Хранить в одном файле, а лучше в БД.
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
17.09.2016, 08:33 3
Цитата Сообщение от Nalik Посмотреть сообщение
я написал программу запоминания паролей, шифрованные данные в данный момент хранятся в файлах.
Посмотрите прикрепленный архив. Там примерно то же самое реализуется.
Цитата Сообщение от Nalik Посмотреть сообщение
В дальнейшем хочу сделать облачное хранилище, чтобы все данные подгружались с сервера
Хранить пароли на чужом сервере - не уверен, что хорошая идея в плане безопасности, если это ваши пароли.
Вложения
Тип файла: rar Password Saver.rar (620.7 Кб, 7 просмотров)
0
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
17.09.2016, 13:25  [ТС] 4
Цитата Сообщение от insite2012 Посмотреть сообщение
Хранить пароли на чужом сервере - не уверен, что хорошая идея в плане безопасности, если это ваши пароли.
Как сказать чужой, у меня есть арендуемый хостинг (не сервер, хотя в данном случае разницы нет). Но он естественно физически расположен не у меня

На счёт безопасности, подскажите пожалуйста метод шифрования с закрытым ключом, который не взломать не зная этого самого ключа. А то у меня сейчас получается, что если взломать программу и посмотреть алгоритм шифрования, то запросто можно расшифровать любой файл, даже не зная ключа, т.к. зашифрованные данные вместе с ключом смешиваются в одном файле по нескольким вариантам алгоритмов, а при расшифровке мы получаем пару "пароль:расшифрованные данные", пароль сверяем с введенным в программе и если он не совпадает, то просто не отдаем расшифрованные данные, НО, если взломать программу, то нам и не нужно будет знать пароль, мы просто будем забирать уже расшифрованные данные Пока не решу эту проблему, никакой связи с интернетом точно не будет, т.к. нужно сначала сделать так, чтобы если злоумышленник получит данные, то для него эти данные были просто мусором.

Во вложение программа, если интересно можете глянуть
Вложения
Тип файла: rar ps.rar (636.9 Кб, 2 просмотров)
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
17.09.2016, 13:28 5
Цитата Сообщение от Nalik Посмотреть сообщение
метод шифрования с закрытым ключом
Ну вот что говорит об этом гугл. Почитайте и выбирайте что вам подойдет.
0
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
17.09.2016, 13:39  [ТС] 6
P.s. Посмотрел прикрепленный архив, хранить все в одном файле, да эта идея всяко лучше, чем хранить в куче разных файлах, но все равно не то, что я хотел)
P.s2. Хотя я конечно реализую хранение все таки в одном файле, это все равно будет лучше

Добавлено через 4 минуты
Цитата Сообщение от insite2012 Посмотреть сообщение
Ну вот что говорит об этом гугл. Почитайте и выбирайте что вам подойдет.
"Шифрования с закрытым ключом — это RC2, RC4, RC5, тройной DES (triple DES) и IDEA, DES"
Да я читал все эти статьи, я хотел бы узнать ваше мнение на основе личного опыта А что мне подойдет лучше я конечно выберу) Просто хотелось бы услышать рекомендации от уже знакомых людей (на форуме все таки вас постоянно вижу) а статьи в интернете пишет неизвестно кто
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
17.09.2016, 13:50 7
Лучший ответ Сообщение было отмечено Nalik как решение

Решение

Цитата Сообщение от Nalik Посмотреть сообщение
я хотел бы узнать ваше мнение на основе личного опыта
Я бы выбрал AES.
1
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
20.09.2016, 15:42  [ТС] 8
Цитата Сообщение от insite2012 Посмотреть сообщение
Я бы выбрал AES.
Воспользовался вашим советом, спасибо)

Цитата Сообщение от Sanya_sa Посмотреть сообщение
Хранить в одном файле, а лучше в БД.
Просмотрел инфу на скорую руку, увидел целую кучу разных вариантов баз: .mdb, .mdf, .sdf, .db и т.д.
И разные варианты взаимодействия с этими Бд. Посоветуете что лучше использовать для моих целей?
И в таком случае, хотелось бы иметь возможность установить пароль на локальную БД, чтобы не зная его невозможно её было открыть в других редакторах. Такое возможно?

А да, основным условием при этом является отсутствие установленых пакетов типа SQL Server, установлен будет только Net Framework
0
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,271
Записей в блоге: 9
20.09.2016, 15:54 9
Лучший ответ Сообщение было отмечено Nalik как решение

Решение

Nalik,
Ну хз ) может SQLite? Простая, никаких серверов не нужно. Ну или access (ее правда все называют не до СУБД, хотя по мне для простенькой структурированной сохранки данных пойдет. И .NET с ней на ура дружит)?
1
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
20.09.2016, 15:59  [ТС] 10
Цитата Сообщение от Sanya_sa Посмотреть сообщение
может SQLite?
Тоже подумал про неё, вычитал из другой темы) А пароль на неё установить можно, не знаете?
0
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,271
Записей в блоге: 9
20.09.2016, 16:09 11
Цитата Сообщение от Nalik Посмотреть сообщение
А пароль на неё установить можно, не знаете?
Неа)
можно данные писать шифрованые (как вариант)
1
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
20.09.2016, 16:12  [ТС] 12
Цитата Сообщение от Sanya_sa Посмотреть сообщение
Неа)
можно данные писать шифрованые (как вариант)
Понял, спасибо)
0
Администратор
Эксперт .NET
17548 / 13771 / 5298
Регистрация: 17.03.2014
Сообщений: 28,247
Записей в блоге: 1
20.09.2016, 16:47 13
Цитата Сообщение от Nalik Посмотреть сообщение
А пароль на неё установить можно, не знаете?
Можно. Установка пароля:
C#
1
2
3
4
5
using (SQLiteConnection conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;"))
{
    conn.SetPassword("password");
    conn.Open();
}
Подключение с паролем:
C#
1
2
3
4
using (SQLiteConnection conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;Password=password;"))
{
    conn.Open();
}
2
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
20.09.2016, 21:14  [ТС] 14
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Можно. Установка пароля:
Здорово, спасибо!)

Добавлено через 4 часа 12 минут
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Подключение с паролем:
Правильно создаю таблицу в запароленной БД?
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
#region Создание БД
            SQLiteConnection.CreateFile(databaseName);
            #endregion
            #region Установка пароля
            using (SQLiteConnection conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;"))
            {
                conn.SetPassword(Form1.key);
                conn.Open();
            }
 
            SQLiteConnection.CreateFile(databaseName);
            SQLiteConnection connection = new SQLiteConnection("Data Source=" + databaseName + ";Version=3;");
            connection.SetPassword(Form1.key);
            connection.Open();
            #region Создание таблицы хранения данных
            SQLiteCommand command = new SQLiteCommand("CREATE TABLE data" +
            "(id INTEGER PRIMARY KEY," + //id
            "groups LONGTEXT," + //Группа 
            "name LONGTEXT," + //Наименование
            "login LONGTEXT," + //Логин
            "password LONGTEXT," + //Пароль
            "description LONGTEXT," + //Описание
            "date_created LONGTEXT," + //Дата создания
            "date_changes LONGTEXT);" //Дата редактирования
            , connection);
            command.ExecuteNonQuery();
            #endregion
            connection.Close();
0
Администратор
Эксперт .NET
17548 / 13771 / 5298
Регистрация: 17.03.2014
Сообщений: 28,247
Записей в блоге: 1
20.09.2016, 21:29 15
Цитата Сообщение от Nalik Посмотреть сообщение
Правильно создаю таблицу в запароленной БД?
По моему нет т.к. ты почему-то не понимаешь разницы между установкой пароля (которую нужно сделать всего один раз) и входом под этим паролем.
0
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
20.09.2016, 21:42  [ТС] 16
Цитата Сообщение от OwenGlendower Посмотреть сообщение
По моему нет т.к. ты почему-то не понимаешь разницы между установкой пароля (которую нужно сделать всего один раз) и входом под этим паролем.
Разницу понимаю, не понимаю как это сделать
Если честно, у меня последние дней 5 глаза по 5 рублей от работы с БД

Так вроде правильно должно быть?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string password = "password";
            #region Создание БД
            SQLiteConnection.CreateFile(databaseName);
            #endregion
            #region Установка пароля
            using (SQLiteConnection conn = new SQLiteConnection("Data Source=" + databaseName +";Version=3;"))
            {
                conn.SetPassword(password);
                conn.Open();
            }
            #endregion
            using (SQLiteConnection conn = new SQLiteConnection("Data Source=" + databaseName +";Version=3;Password="+ password+";"))
            {
                conn.Open();
                #region Создание таблицы хранения данных
                //id, Группа, Наименование, Логин, Пароль, Описание, Дата создания, Дата редактирования
                SQLiteCommand command = new SQLiteCommand("CREATE TABLE data(id INTEGER PRIMARY KEY,groups LONGTEXT,name LONGTEXT,login LONGTEXT,password LONGTEXT,description LONGTEXT,date_created LONGTEXT,date_changes LONGTEXT);", conn);
                command.ExecuteNonQuery();
                #endregion
                conn.Close();
            }
0
Администратор
Эксперт .NET
17548 / 13771 / 5298
Регистрация: 17.03.2014
Сообщений: 28,247
Записей в блоге: 1
20.09.2016, 21:44 17
Цитата Сообщение от Nalik Посмотреть сообщение
Так вроде правильно должно быть?
Вроде да.
0
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
20.09.2016, 21:46  [ТС] 18
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Вроде да.
На SQLite нет нормального wiki, не знаете? Что-то я не смог найти)
0
Администратор
Эксперт .NET
17548 / 13771 / 5298
Регистрация: 17.03.2014
Сообщений: 28,247
Записей в блоге: 1
20.09.2016, 22:03 19
Nalik, я пользовался только документацией на официальном сайте. Для System.Data.SQLite есть справка в формате chm.
1
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
21.09.2016, 22:31  [ТС] 20
Цитата Сообщение от OwenGlendower Посмотреть сообщение
По моему нет т.к. ты почему-то не понимаешь разницы между установкой пароля (которую нужно сделать всего один раз) и входом под этим паролем.
Можно еще 2 вопросика по теме?
1. Я установил пароль на вход в БД, злоумышленник сможет его узнать, он хранится где-то в открытом виде? (вообще было бы интересно почитать/узнать каким именно образом устанавливается пароль на БД, весь файл шифруется этим паролем или всего лишь перед отдачей данных идет проверка на соответствие введенного пароля и зашитого в БД).
2. Возможно ли изменить пароль от БД извне, не зная текущего пароля? (На сколько я понимаю, сейчас чтобы изменить пароль и вызвать свойство ChangePassword, нужно сначала соединиться с БД под паролем, но лучше уточнить у более опытного человека)
0
21.09.2016, 22:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2016, 22:31
Помогаю со студенческими работами здесь

Добавить деструктор к готовой программе
#include <iostream> #include <conio.h> using std::cout; #pragma hdrstop #pragma argsused...

Как добавить файл в ресурсы?
Нужно добавить .h файл в ресурсы вида: unsigned char funky = {1, 2, 3}... Но Builder пишет: ...

К готовой проге добавить запись в файл. Найдите ошибку
вот исходный код готовой программы, нужно добавить чтоб она считывала исходный текст из файла и...

Как в программе можно открыть файл, с уже готовой базой данных в Access
Скажите как в программе можно открыть файл, с уже готовой базой данных в Access


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

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