.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] + " ");
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.667 из 5
Похожие ответы