.NET 4.x Шифрование и расшифровка строки с записью/чтением из БД - C#
Формулировка задачи:
Доброго времени суток.
Необходимо реализовать шифрование строки, и затем ее расшифрование.
Данная строка записывается в БД в зашифрованном виде, а затем из нее должна преобразовываться в в исходную.
Данный функционал был реализован мною так, когда зашифрованное значение хранится в byte[], то все ок, но т.к. мне необходимо в конечном счете работать со строками, то расшифровка из строки не работает.
Не знаю, как решить данную проблему. Все уже перепробовали)
Помогите, пожалуйста, кто в этом силен.
Вот моя реализация):
using System; using System.Security.Cryptography; using System.Text; namespace CoderDecoder { internal class Program { private static void Main(string[] args) { string login = "UserLogin"; var coderlogin = CoderString(login); var decoderlogin = DecoderString(coderlogin); Console.WriteLine("Логин:"); Console.WriteLine(login + "\n"); Console.WriteLine("Зашифрованный Логин:"); Console.WriteLine(coderlogin+"\n"); Console.WriteLine("Расшифрованный Логин:"); Console.WriteLine(decoderlogin + "\n"); Console.ReadKey(); } /// <summary> /// Метод шифрования строки /// </summary> /// <param name="str">исходная (нешифрованная) строка</param> /// <returns>шифрованная строка</returns> private static string CoderString(string str) { string ret = string.Empty; try { var provider = new RSACryptoServiceProvider(); Byte[] encryptedBytes = provider.Encrypt( Encoding.UTF8.GetBytes(str), true); // этот "говнокод" переводит из массива в строку // не знаю, как это сделать иначе) foreach (byte encryptedByte in encryptedBytes) { ret = ret + encryptedByte; } } catch (Exception) { Console.WriteLine("Ничего не вышло!"); } return ret; } /// <summary> /// Метод дешифрования строки /// </summary> /// <param name="str">исходная (шифрованная) строка</param> /// <returns>дешифрованная строка</returns> private static string DecoderString(string str) { string ret = string.Empty; try { var provider = new RSACryptoServiceProvider(); // привожу строку к массиву Byte для расшивровки // видимо здесь и косяк) Byte[] strbyte = Encoding.Default.GetBytes(str); ret = Encoding.UTF8.GetString( provider.Decrypt(strbyte, true)); } catch (Exception) { Console.WriteLine("Ничего не вышло!"); } return ret; } } }
Решение задачи: «.NET 4.x Шифрование и расшифровка строки с записью/чтением из БД»
textual
Листинг программы
byte[] bytes = {10, 12, 13, 14, 15}; string s2 = string.Join("", bytes.Select(x => x.ToString("X2"))); Console.WriteLine(s2); byte[] resultBytes = new byte[s2.Length/2]; for (int i = 0; i < resultBytes.Length; i++) { resultBytes[i] = byte.Parse(s2.Substring(2*i, 2), NumberStyles.AllowHexSpecifier); Console.Write(resultBytes[i] + " "); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д