Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
C# = ♫♪♫♪♪♫
57 / 56 / 18
Регистрация: 02.08.2014
Сообщений: 283
1

PasswordDeriveBytes. Где хранить пароль и соль ключа?

10.09.2016, 17:23. Показов 2270. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Из справки по данному класу:
Примечание о безопасности Примечание по безопасности
Не следует жестко кодировать пароль в исходный код. Жестко запрограммированные пароли можно извлечь из сборки с помощью Ildasm.exe (дизассемблер IL) средства, или шестнадцатеричного редактора, либо открыв сборку в текстовом редакторе, например notepad.exe.

Подскажите как лучше реализовать хранение пароля и соли ключа. В защите информации я не силен.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2016, 17:23
Ответы с готовыми решениями:

Где хранить пароль?
Мне надо чтобы при входе в приложение юзер вводил пароль, но где его потом хранить? Чтобы...

Где хранить пароль от программы?
Всем привет. Есть fxml форма с логином и паролем. Как можно сделать, чтобы при первом запуске...

Как и где хранить пароль от БД?
Я пишу многопользовательское ПО которое имеет доступ к БД MySQL. Допустим Пользователь знает...

Где хранить логин и пароль пользователя
Где тру программисты хранят логины и пароли авторизованных пользователей - в куках или сессиях?

6
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
10.09.2016, 17:31 2
А) шифровать
Б) в шифрованном виде хранить на хостинге и от туда запрашивать
1
C# = ♫♪♫♪♪♫
57 / 56 / 18
Регистрация: 02.08.2014
Сообщений: 283
10.09.2016, 17:51  [ТС] 3
Цитата Сообщение от iDReeM Посмотреть сообщение
в шифрованном виде хранить на хостинге и от туда запрашивать
Что имеется виду под хостингом ? Мое приложение будет локальное.
0
C# = ♫♪♫♪♪♫
57 / 56 / 18
Регистрация: 02.08.2014
Сообщений: 283
10.09.2016, 18:03  [ТС] 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
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
 
namespace Shifr
{
    class Program
    {
        //метод шифрования строки
        public static string Shifrovka(string ishText, string pass,
               string sol = "doberman", string cryptographicAlgorithm = "SHA1",
               int passIter = 2, string initVec = "a8doSuDitOz1hZe#",
               int keySize = 256)
        {
            if (string.IsNullOrEmpty(ishText))
                return "";
 
            byte[] initVecB = Encoding.ASCII.GetBytes(initVec);
            byte[] solB = Encoding.ASCII.GetBytes(sol);
            byte[] ishTextB = Encoding.UTF8.GetBytes(ishText);
 
            PasswordDeriveBytes derivPass = new PasswordDeriveBytes(pass, solB, cryptographicAlgorithm, passIter);
            byte[] keyBytes = derivPass.GetBytes(keySize / 8);
            RijndaelManaged symmK = new RijndaelManaged();
            symmK.Mode = CipherMode.CBC;
 
            byte[] cipherTextBytes = null;
 
            using (ICryptoTransform encryptor = symmK.CreateEncryptor(keyBytes, initVecB))
            {
                using (MemoryStream memStream = new MemoryStream())
                {
                    using (CryptoStream cryptoStream = new CryptoStream(memStream, encryptor, CryptoStreamMode.Write))
                    {
                        cryptoStream.Write(ishTextB, 0, ishTextB.Length);
                        cryptoStream.FlushFinalBlock();
                        cipherTextBytes = memStream.ToArray();
                        memStream.Close();
                        cryptoStream.Close();
                    }
                }
            }
 
            symmK.Clear();
            return Convert.ToBase64String(cipherTextBytes);
        }
 
        //метод дешифрования строки
        public static string DeShifrovka(string ciphText, string pass,
               string sol = "doberman", string cryptographicAlgorithm = "SHA1",
               int passIter = 2, string initVec = "a8doSuDitOz1hZe#",
               int keySize = 256)
        {
            if (string.IsNullOrEmpty(ciphText))
                return "";
 
            byte[] initVecB = Encoding.ASCII.GetBytes(initVec);
            byte[] solB = Encoding.ASCII.GetBytes(sol);
            byte[] cipherTextBytes = Convert.FromBase64String(ciphText);
 
            PasswordDeriveBytes derivPass = new PasswordDeriveBytes(pass, solB, cryptographicAlgorithm, passIter);
            byte[] keyBytes = derivPass.GetBytes(keySize / 8);
 
            RijndaelManaged symmK = new RijndaelManaged();
            symmK.Mode = CipherMode.CBC;
 
            byte[] plainTextBytes = new byte[cipherTextBytes.Length];
            int byteCount = 0;
 
            using (ICryptoTransform decryptor = symmK.CreateDecryptor(keyBytes, initVecB))
            {
                using (MemoryStream mSt = new MemoryStream(cipherTextBytes))
                {
                    using (CryptoStream cryptoStream = new CryptoStream(mSt, decryptor, CryptoStreamMode.Read))
                    {
                        byteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
                        mSt.Close();
                        cryptoStream.Close();
                    }
                }
            }
 
            symmK.Clear();
            return Encoding.UTF8.GetString(plainTextBytes, 0, byteCount);
        }
 
        static void Main(string[] args)
        {
 
            String gg = Shifrovka("Маша, я тебя люблю!", "пароль");
            String gg2 = DeShifrovka(gg, "пароль");
            Console.WriteLine(gg);
            Console.WriteLine(gg2);
            Console.ReadKey();
 
        }
    }
}
Кто знает что такое Дизассемблер смогут посмотреть.
PasswordDeriveBytes. Где хранить пароль и соль ключа?
0
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
10.09.2016, 18:15 5
Цитата Сообщение от Sanek32 Посмотреть сообщение
Что имеется виду под хостингом ? Мое приложение будет локальное.
фтп.

Цитата Сообщение от Sanek32 Посмотреть сообщение
Кто знает что такое Дизассемблер смогут посмотреть.
AES юзай, или xor. ксор удобней всего. а аргументы, передавай. именно передавай чтобы их можно было достать только во время вызова функции.
1
C# = ♫♪♫♪♪♫
57 / 56 / 18
Регистрация: 02.08.2014
Сообщений: 283
10.09.2016, 18:47  [ТС] 6
iDReeM, Спасибо
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
10.09.2016, 19:44 7
Лучший ответ Сообщение было отмечено Sanek32 как решение

Решение

Цитата Сообщение от Sanek32 Посмотреть сообщение
как лучше реализовать хранение пароля
Windows Data Protection
https://msdn.microsoft.com/en-... 95355.aspx

ProtectedData Class
https://msdn.microsoft.com/en-... .110).aspx

How to: Use Data Protection
https://msdn.microsoft.com/en-... .110).aspx
1
10.09.2016, 19:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2016, 19:44
Помогаю со студенческими работами здесь

mssql + Android логин пароль где хранить?
есть сайт (интернет магазин ASP + MSSQL) поднят на хостинге у провайдера, приложение должно брать...

Где хранить логин и пароль (авторизация на сайте)
Доброго времени суток! Была поставлена задача сделать сайт с использованием JS. Есть сайт HTML....

Где следует хранить пароль доступа в Интернет
Для тех у кого нет современного роутера, который хранит логин и пароль внутри себя. Дело в том,...

Программа защитник данных - где хранить пароль
Здравствуйте, я почти сделал программу которая защищает данные, но не могу сделать процедуру,...


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

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