Криптография в C# (RSA, DES, SHA1)

Вступление

Криптография механизм который обеспечивает безопасное хранение или передачу данных. Шифрование - процесс преобразования данных (plain text) в зашифрованный текст (ciphertext), который не даст никакой полезной информации злоумышленнику, используя определенный алгоритм. Дешифрование - обратный процесс, то есть восстановление исходных данных из зашифрованных. Для работы с безопасностью данных в C# вам необходимо будет подключить неймспейс using System.Security.Cryptography

Симметричное шифрование

При симметричном шифровании используется один приватный ключ, который позволяет как шифровать так и дешифровать данные. Такой подход обеспечивает возможность шифровать большие объемы данных. Если мы хотим реализовать обмен сообщениями между двумя клиентами, которые удалены по сети, то нам необходимо передавать не только chipertext но и сам приватный ключ, который злоумышленник может легко перехватить если канал передачи данных не зашифрован - это основной недостаток данного метода. Популярные алгоритмы: DES, TDES, RC2, Rijndael, AES.

Пример шифрования DES на C#

public static byte[] SymmetricEncrypt(string strText, SymmetricAlgorithm key)
{
	// Create a memory stream.
	MemoryStream ms = new MemoryStream();

	// Create a CryptoStream using the memory stream and the
	// CSP(cryptoserviceprovider) DES key.
	CryptoStream crypstream = new CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write);

	// Create a StreamWriter to write a string to the stream.
	StreamWriter sw = new StreamWriter(crypstream);

	// Write the strText to the stream.
	sw.WriteLine(strText);

	// Close the StreamWriter and CryptoStream.
	sw.Close();
	crypstream.Close();

	// Get an array of bytes that represents the memory stream.
	byte[] buffer = ms.ToArray();

	// Close the memory stream.
	ms.Close();

	// Return the encrypted byte array.
	return buffer;
}

Асимметричное шифрование

При асимметричном шифровании используется два ключа (публичный и приватный). Поэтому для чата между пользователями достаточно лишь обменяться публичными ключами, которых будет недостаточно для дешифрования chipertext. Основной недостаток - подход действителен для небольших объемов данных. Популярные алгоритмы: RSA, DSA, ECDsa, ECDiffieHellman.

Пример шифрования RSA на C#

static public byte[] RSAEncrypt(byte[] byteEncrypt, RSAParameters RSAInfo, bool isOAEP)
{
	try
	{
		byte[] encryptedData;
		//Create a new instance of RSACryptoServiceProvider.
		using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
		{

			//Import the RSA Key information. This only needs
			//toinclude the public key information.
			RSA.ImportParameters(RSAInfo);

			//Encrypt the passed byte array and specify OAEP padding.
			encryptedData = RSA.Encrypt(byteEncrypt, isOAEP);
		}
		return encryptedData;
	}
	//Catch and display a CryptographicException
	//to the console.
	catch (CryptographicException e)
	{
		Console.WriteLine(e.Message);

		return null;
	}
}

Хэш функция

Хэш функция позволяет преобразовать данные в код определенной длинны, который будет невозможно преобразовать обратно. Где может применяться!? Хэш функция используется для хранения паролей, если злоумышленник взломает базу данных, то он не увидит настоящие пароли.

Пример SHA1 на C#

static string GetHash(string plaintext)
{
	var sha = new SHA1Managed();
	byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(plaintext));
	return Convert.ToBase64String(hash);
}

P.S. Все исходники доступны в прикрепленном архиве. Для запуска необходима Visual Studio 2015

Присоединяйся

Зарегестрируйся с помощью социальных сетей.

Публикуй

Опиши работу, прикрепи файлы и назначь цену.

Зарабатывай

Получай пассивный доход с продажи работ.

Тебе понадобится 5 минут для публикации работы на сайте.
Похожие работы
Скачать

бесплатно

1.8.3 - Crypto.zip
21755
Оцени работу

рейтинг

Поделись работой с друзьями

Мы не грузим циферки, чтоб ты увидел контент как можно быстрее;

Комментарии (0)

dmytro

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегестрированые пользователи имеют возможность комментировать работы
Криптография в C# (RSA, DES, SHA1)
Исходный код на C# содержит примеры: симметричное шифрование DES, асимметричное шифрование RSA, хеш функция SHA1шифрование на C#
Категория: Образование
Стоимость: Бесплатно