ShakalX Ответов: 2

Как сделать шифратор с функцией дешифратора? Помогите


Привет всем, у меня есть эта функция, которая расшифровывает, и я хочу сделать наоборот, я хочу использовать ту же самую функцию для шифрования строк. Как я могу это сделать?

public string Decrypt(string cipherText, int Iv, string[] pass)
   {
     string password = "sdHBDHC^BGGijvn";
     byte[] buffer = Convert.FromBase64String(cipherText);
     using (Aes aes = Aes.Create())
     {
       Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes(password, new byte[13]
       {
         (byte) 73,
         (byte) 118,
         (byte) 97,
         (byte) 110,
         (byte) 32,
         (byte) 77,
         (byte) 101,
         (byte) 100,
         (byte) 118,
         (byte) 101,
         (byte) 100,
         (byte) 101,
         (byte) 118
       });
       aes.Key = rfc2898DeriveBytes.GetBytes(32);
       aes.IV = rfc2898DeriveBytes.GetBytes(16);
       using (MemoryStream memoryStream = new MemoryStream())
       {
         using (CryptoStream cryptoStream = new CryptoStream((Stream) memoryStream, aes.CreateDecryptor(), CryptoStreamMode.Write))
         {
           cryptoStream.Write(buffer, 0, buffer.Length);
           cryptoStream.Close();
         }
         cipherText = Encoding.Unicode.GetString(memoryStream.ToArray());
       }
     }
     return cipherText;
   }


Что я уже пробовал:

Я могу расшифровать с помощью этой функции строки, которые были зашифрованы с ее помощью, но я хочу сделать обратное, я хочу зашифровать строки с помощью этой функции. Я знаю, что некоторые вещи нужно изменить, чтобы создать кодировку. но как это будет выглядеть? Спасибо.

0x01AA

Вот пример, я надеюсь, что он подходит: Класс Rfc2898DeriveBytes (System.Безопасность.Криптография)[^]

ShakalX

Привет. Спасибо, но я всего лишь ученик. Я не совсем понимаю эти вещи. Я подумал, что мог бы использовать базовый сценарий, чтобы сделать кодировку. Ибо он должен иметь несколько модификаций, чтобы сделать.

2 Ответов

Рейтинг:
7

ShakalX

Решение Спасибо за все

public static string Encrypt1(string clearText, int Iv, string[] pass)
           {
           string EncryptionKey = "sdHBDHC^BGGijvn";
           byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
           using (Aes encryptor = Aes.Create())
               {
               Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[13] { 73, 118, 97, 110, 32, 77, 101, 100, 118, 101, 100, 101, 118 });
               encryptor.Key = pdb.GetBytes(32);
               encryptor.IV = pdb.GetBytes(16);
               using (MemoryStream ms = new MemoryStream())
                   {
                   using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
                       {
                       cs.Write(clearBytes, 0, clearBytes.Length);
                       cs.Close();
                       }
                   clearText = Convert.ToBase64String(ms.ToArray());
                   }
               }
           return clearText;
           }


Рейтинг:
15

ShakalX

Спасибо за помощь. это работает. =)