Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
29 / 29 / 10
Регистрация: 06.02.2014
Сообщений: 156
1

Программа для шифрования файлов в один контейнер. Оцените реализацию

27.02.2014, 12:13. Показов 1431. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую.
Написал свою первую программу. Суть такая: Выбираются файлы, добавляются в контейнер(zip) и потом этот контейнер шифруется алгоритмом AES. Ключ и вектор это хэш(MD5) пароля.
Хочу что бы Вы как опытные в этом деле оценили реализацию, указали на ошибки и т.д. Особенно интересует реализация "CryptoClass" Интерфейс да, немного туповатый.
Вложения
Тип файла: rar Crypt storage.rar (434.6 Кб, 29 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2014, 12:13
Ответы с готовыми решениями:

Программа для шифрования и расшифровки текстовых файлов
программа для шифрования и расшифровки текстовых файлов.

Алгоритм шифрования или программа для защиты от использования файлов вне компании
День добрый, ситуация такая: Есть сетевая папка, в ней чертежи, ими пользуются несколько...

STL-контейнер.Переделать реализацию.
Ребята, написал прогу, в которой контейнер типа вектор хранит данные класса банк, и проводит с ними...

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

5
3 / 3 / 1
Регистрация: 05.12.2013
Сообщений: 22
27.02.2014, 12:28 2
Привет, в целом все неплохо, некоторые замечания:
- Достаточно долго соображала в первой функции, как мне открыть диалог бокс для добавления файла, возможно нужно сделать кнопку "добавить файлы"?
- Ну и когда просят вводить пароль хорошо бы, чтобы по нажатии кнопки "Enter" нажималась кнопка ок.
- MD5 слаба функция, или в этой реализации это не существенно?

Добавлено через 2 минуты
Ну и конечно хорошо бы используя ООП переписать)
0
29 / 29 / 10
Регистрация: 06.02.2014
Сообщений: 156
27.02.2014, 12:38  [ТС] 3
Спасибо.
По поводу удобства интерфейса - можно не обращать на него внимания.
А что вы имеете введу переписать используя ООП? по конкретней можно?
0
29 / 29 / 10
Регистрация: 06.02.2014
Сообщений: 156
28.02.2014, 14:31  [ТС] 4
апнусь
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
28.02.2014, 17:39 5
ZipException, при попытке распаковать в директорию, где есть файлы.

Добавлено через 25 минут
Вот могу поделится классом определяющим сложность пароля

Кликните здесь для просмотра всего текста
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
public class PasswordStrength
    {
        private const string badPass = "Week; Use letters & numbers";
        private const string goodPass = "Medium; Use special charecters";
        private const string sameAsUsername = "Password is the same as username.";
        private const string shortPass = "Too Short Password";
        private const string strongPass = "Strong Password";
 
        public string passwordStrength(string password, string username)
        {
            int score = 0;
 
            //password < 4
            if (password.Length < 4)
            {
                return shortPass;
            }
 
            //password == username
            if (password.ToLower() == username.ToLower())
                return sameAsUsername;
 
            //password length
            score += password.Length*4;
            score += (checkRepetition(1, password).Length - password.Length)*1;
            score += (checkRepetition(2, password).Length - password.Length)*1;
            score += (checkRepetition(3, password).Length - password.Length)*1;
            score += (checkRepetition(4, password).Length - password.Length)*1;
 
            var regex = new Regex("/(.*[0 - 9].*[0 - 9].*[0 - 9])/");
 
            //password has 3 numbers
            if (regex.IsMatch(password))
                score += 5;
 
            regex = new Regex("/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/");
            //password has 2 sybols
            if (regex.IsMatch(password))
                score += 5;
 
            regex = new Regex("/([a - z].*[A - Z])|([A - Z].*[a - z])/");
            //password has Upper and Lower chars
            if (regex.IsMatch(password))
                score += 10;
 
            regex = new Regex("/([a - zA - Z])/");
            var regex1 = new Regex("/([0 - 9])/");
            //password has number and chars
            if (regex.IsMatch(password) && regex1.IsMatch(password))
                score += 15;
 
            regex = new Regex("/([!,@,#,$,%,^,&,*,?,_,~])/");
            regex1 = new Regex("/([0-9])/");
 
            //password has number and symbol
            if (regex.IsMatch(password) && regex1.IsMatch(password))
                score += 15;
 
            regex = new Regex("/([!,@,#,$,%,^,&,*,?,_,~])/");
            regex1 = new Regex("/([a-zA-Z])/");
 
            //password has char and symbol
            if (regex.IsMatch(password) && regex1.IsMatch(password))
                score += 15;
 
            regex = new Regex(@"/^\w +$/");
            regex1 = new Regex(@"/^\d +$/");
            //password is just a nubers or chars
            if (regex.IsMatch(password) || regex1.IsMatch(password))
                score -= 10;
 
            //verifing 0 < score < 100
            if (score < 0) score = 0;
            if (score > 100) score = 100;
 
            if (score < 34) return badPass;
            if (score < 68) return goodPass;
            return strongPass;
        }
 
        public int passwordStrengthPercent(string password, string username)
        {
            int score = 0;
 
            //password < 4
            if (password.Length < 4)
            {
                return 0;
            }
 
            //password == username
            if (password.ToLower() == username.ToLower()) return 0;
 
            //password length
            score += password.Length*4;
            score += (checkRepetition(1, password).Length - password.Length)*1;
            score += (checkRepetition(2, password).Length - password.Length)*1;
            score += (checkRepetition(3, password).Length - password.Length)*1;
            score += (checkRepetition(4, password).Length - password.Length)*1;
 
            var regex = new Regex("/(.*[0 - 9].*[0 - 9].*[0 - 9])/");
 
            //password has 3 numbers
            if (regex.IsMatch(password))
                score += 5;
 
            regex = new Regex("/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/");
            //password has 2 sybols
            if (regex.IsMatch(password))
                score += 5;
 
            regex = new Regex("/([a - z].*[A - Z])|([A - Z].*[a - z])/");
            //password has Upper and Lower chars
            if (regex.IsMatch(password))
                score += 10;
 
            regex = new Regex("/([a - zA - Z])/");
            var regex1 = new Regex("/([0 - 9])/");
            //password has number and chars
            if (regex.IsMatch(password) && regex1.IsMatch(password))
                score += 15;
 
            regex = new Regex("/([!,@,#,$,%,^,&,*,?,_,~])/");
            regex1 = new Regex("/([0-9])/");
 
            //password has number and symbol
            if (regex.IsMatch(password) && regex1.IsMatch(password))
                score += 15;
 
            regex = new Regex("/([!,@,#,$,%,^,&,*,?,_,~])/");
            regex1 = new Regex("/([a-zA-Z])/");
 
            //password has char and symbol
            if (regex.IsMatch(password) && regex1.IsMatch(password))
                score += 15;
 
            regex = new Regex(@"/^\w +$/");
            regex1 = new Regex(@"/^\d +$/");
            //password is just a nubers or chars
            if (regex.IsMatch(password) || regex1.IsMatch(password))
                score -= 10;
 
            if (score > 100) return 100;
            return (score);
        }
 
        private string checkRepetition(int pLen, string str)
        {
            string res = "";
            for (int i = 0; i < str.Length; i++)
            {
                bool repeated = true;
                for (int j = 0; j < pLen && (j + i + pLen) < str.Length; j++)
                {
                    repeated = repeated && (str[j + i] == str[j + i + pLen]);
                    if (j < pLen) repeated = false;
                    if (repeated)
                    {
                        i += pLen - 1;
                        repeated = false;
                    }
                    else
                    {
                        res += str[i];
                    }
                }
            }
            return res;
        }
    }


Взято отсюда и переделано на c#
0
29 / 29 / 10
Регистрация: 06.02.2014
Сообщений: 156
28.02.2014, 17:41  [ТС] 6
Да там сборка кривая, если с заменой то оно не заменяет, а если без то исключение
Вот могу поделится классом определяющим сложность пароля
Да этот по лучше чем тот что я нашел. Спасибо ))
0
28.02.2014, 17:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2014, 17:41
Помогаю со студенческими работами здесь

Контейнер для файлов
Всем привет, у меня вопрос. Вот у меня есть файл формата допустим *.dat, как мне в этот файл...

Файловый контейнер без шифрования
Привет ツ Как сделать файловый контейнер, который можно монтировать, как диск? Аналогично...

Использование dll как контейнер для файлов в builder 6
Пишу игру. Нужно спрятать BMPшные картинки в dll и прямо оттуда их загружать в Image. Как это...

Оцените реализацию Угадывателя чисел
И вопрос на засыпку, можно ли как то максимально оптимизировать данный процесс? Если да, то как....


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

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