am [чтение] из простого текстового файла, имя пользователя и пароли, но его плохой способ обеспечения безопасности данных, есть ли другой способ сделать это, скорее всего, используя алгоритмы шифрования шифрования IV, ,Защита данных на стороне клиента
ответ
Вы можете кодировать свои пароли с помощью HASHES, таких как SHA1.
Function getSHA1Hash(ByVal strToHash As String) As String
Dim sha1Obj As New Security.Cryptography.SHA1CryptoServiceProvider
Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strToHash)
bytesToHash = sha1Obj.ComputeHash(bytesToHash)
Dim strResult As String = ""
For Each b As Byte In bytesToHash
strResult += b.ToString("x2")
Next
Return strResult
End Function
Использование это просто!
Console.Write(getSHA1Hash("password"))
Поэтому, когда вам нужно для аутентификации пользователя, вы можете взять его входной пароль, вычислить хэш его с помощью описанной выше функции и убедитесь, что это то же самое с простой IF статьи:
if getSHA1Hash(input_password) = HASHED_OLD_PASSWORD then Authenticate()
Хеши SHA1 не могут быть дешифруемыми без явной скотины, что делает все возможное, поэтому это довольно безопасное решение.
Вам нужно решить, нужно ли вам снова расшифровывать текст или нет. Я бы предположил, что для паролей, по крайней мере, вы можете использовать однонаправленный хеш. Вы можете сделать это намного сложнее, если грубая сила атакует хэш, если вы используете соль. В идеале для каждого пароля следует использовать отдельную случайную соль: password + salt = hash. Вам нужно сохранить соль, а также хеш, но ее можно сохранить в текстовом виде, поскольку она не является криптографически секретной. Пример реализации (с использованием SHA256):
public class SHA256
{
public static string GetHash(string password, string salt)
{
UTF8Encoding encoder = new UTF8Encoding();
SHA256Managed sha256 = new SHA256Managed();
byte[] hashedDataBytes = sha256.ComputeHash(encoder.GetBytes(salt + password));
return ByteArrayToString(hashedDataBytes);
}
/// <summary>
/// Generates a random 16 character alpha-numeric salt
/// </summary>
/// <returns></returns>
public static string GenerateRandomSalt()
{
const string allowedChars = "ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
char[] chars = new char[16];
var rd = new Random((int)DateTime.Now.Ticks);
for (int i = 0; i < 16; i++)
{
chars[i] = allowedChars[rd.Next(0, allowedChars.Length)];
}
return new string(chars);
}
/// <summary>
/// Converts supplied byte array to hex format string.
/// </summary>
/// <param name="inputArray"></param>
/// <returns></returns>
private static string ByteArrayToString(byte[] inputArray)
{
StringBuilder output = new StringBuilder("");
for (int i = 0; i < inputArray.Length; i++)
{
output.Append(inputArray[i].ToString("X2")); //Return in hex format
}
return output.ToString();
}
}
Метод GenerateRandomSalt может быть использован для создания соли для вашего пароля. На SO есть много других вопросов, касающихся такого рода вещей.
- 1. Защита логики и данных на стороне клиента
- 2. Защита данных на стороне сервера
- 3. Защита клиентских SDK на стороне клиента
- 4. Защита чистых приложений на стороне клиента
- 5. Защита на стороне клиента Безопасность ключа
- 6. Защита ключей базы данных для обработки на стороне клиента
- 7. Rikulo на стороне клиента на стороне клиента
- 8. отладка на стороне клиента на стороне клиента
- 9. Запрос на стороне клиента на стороне клиента
- 10. Watson bluemix iot - Защита приложения на стороне клиента
- 11. Изменение данных/перерисовка данных на стороне клиента
- 12. Получение данных базы данных на стороне клиента
- 13. Проверка на стороне клиента
- 14. сомнения на стороне клиента
- 15. Должна ли защита данных выполняться на стороне базы данных?
- 16. C# - Защита паролем на стороне сервера
- 17. Рамки для хранения данных на стороне клиента
- 18. Кадрирование данных на стороне клиента в asp.net?
- 19. CouchDB Сохранение учетных данных на стороне клиента
- 20. Аннотации данных MVC на стороне клиента условно
- 21. Разоблачения данных конфигурации службы на стороне клиента
- 22. Локальное хранение данных на стороне клиента
- 23. Силовое кэширование данных на стороне клиента
- 24. Сжатие/распаковка данных на стороне клиента?
- 25. Автоматическое обновление данных на стороне клиента
- 26. Зацикливание данных json на стороне клиента
- 27. Клиентские транзакции базы данных на стороне клиента
- 28. Получение учетных данных службы на стороне клиента
- 29. Передача данных клиента методам на стороне сервера
- 30. Шифрование конфиденциальных данных на стороне клиента
спасибо mindw0rk, отличный подход к моей проблеме, заголовок для реализации вашего результата :-) – sarepta
хэши _not_ encryption –
Исправлена моя терминология. Хотя это все еще хорошее решение для вопрошающего. – carlossless