Вывести строку в зашифрованном виде - C#

Узнай цену своей работы

Формулировка задачи:

Доброго дня. Есть код AES шифрования, реализованный в C#, нужно вывести слово которое мы шифруем, то есть его в вид в зашифрованном виде
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Security.Cryptography;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace shifr
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. try
  15. {
  16. const string original = "the world is your"; // шифруемая константа
  17. // Создаем новый экземпляр класса Aes
  18. // Создаем ключ и вектор инициализации (IV)
  19. using (var myAes = Aes.Create())
  20. {
  21. // Зашифрованную строку переводим в массив байтов
  22. byte[] encrypted = EncryptStringToBytesAes(original, myAes.Key, myAes.IV);
  23. // Расшифровываем байты и записываем в строку.
  24. string roundtrip = DecryptStringFromBytesAes(encrypted, myAes.Key, myAes.IV);
  25.  
  26. //Выводим на экран результат
  27. Console.WriteLine("Original: {0}", original);
  28. Console.WriteLine("Round Trip: {0}", roundtrip);
  29. }
  30. }
  31. catch (Exception e)
  32. {
  33. // Если что-то не так выбрасываем исключение
  34. Console.WriteLine("Error: {0}", e.Message);
  35. }
  36. Console.ReadKey();
  37. }
  38. static byte[] EncryptStringToBytesAes(string plainText, byte[] Key, byte[] IV)
  39. {
  40. // Проверка аргументов
  41. if (plainText == null || plainText.Length <= 0)
  42. throw new ArgumentNullException("plainText");
  43. if (Key == null || Key.Length <= 0)
  44. throw new ArgumentNullException("Key");
  45. if (IV == null || IV.Length <= 0)
  46. throw new ArgumentNullException("IV");
  47. byte[] encrypted;
  48. // Создаем объект класса AES
  49. // с определенным ключом and IV.
  50. using (Aes aesAlg = Aes.Create())
  51. {
  52. aesAlg.Key = Key;
  53. aesAlg.IV = IV;
  54. // Создаем объект, который определяет основные операции преобразований.
  55. ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
  56. // Создаем поток для шифрования.
  57. using (var msEncrypt = new MemoryStream())
  58. {
  59. using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
  60. {
  61. using (var swEncrypt = new StreamWriter(csEncrypt))
  62. {
  63. //Записываем в поток все данные.
  64. swEncrypt.Write(plainText);
  65. }
  66. encrypted = msEncrypt.ToArray();
  67. }
  68. }
  69. }
  70.  
  71. //Возвращаем зашифрованные байты из потока памяти.
  72. return encrypted;
  73. }
  74.  
  75. static string DecryptStringFromBytesAes(byte[] cipherText, byte[] Key, byte[] IV)
  76. {
  77. // Проверяем аргументы
  78. if (cipherText == null || cipherText.Length <= 0)
  79. throw new ArgumentNullException("cipherText");
  80. if (Key == null || Key.Length <= 0)
  81. throw new ArgumentNullException("Key");
  82. if (IV == null || IV.Length <= 0)
  83. throw new ArgumentNullException("IV");
  84. // Строка, для хранения расшифрованного текста
  85. string plaintext;
  86. // Создаем объект класса AES,
  87. // Ключ и IV
  88. using (Aes aesAlg = Aes.Create())
  89. {
  90. aesAlg.Key = Key;
  91. aesAlg.IV = IV;
  92. // Создаем объект, который определяет основные операции преобразований.
  93. ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
  94. // Создаем поток для расшифрования.
  95. using (var msDecrypt = new MemoryStream(cipherText))
  96. {
  97. using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
  98. {
  99. using (var srDecrypt = new StreamReader(csDecrypt))
  100. {
  101. // Читаем расшифрованное сообщение и записываем в строку
  102. plaintext = srDecrypt.ReadToEnd();
  103. }
  104. }
  105. }
  106. }
  107. return plaintext;
  108. }
  109.  
  110. }
  111. }

Решение задачи: «Вывести строку в зашифрованном виде»

textual
Листинг программы
  1. // Шифруем строку
  2. byte[] encrypted = EncryptStringToBytesAes(original, myAes.Key, myAes.IV);
  3.  
  4. // Выводим на экран в виде hex-строки
  5. Console.WriteLine(BitConverter.ToString(encrypted));
  6.  
  7. // Еще можем вывести в виде base64 строки
  8. Console.WriteLine(Convert.ToBase64String(encrypted));

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


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

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

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы