Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 01.11.2016
Сообщений: 16
1

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

01.11.2016, 22:41. Показов 4214. Ответов 1

Author24 — интернет-сервис помощи студентам
Доброго дня.
Есть код AES шифрования, реализованный в C#, нужно вывести слово которое мы шифруем, то есть его в вид в зашифрованном виде

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

Хранение пароля в зашифрованном виде
Написал программку для монтирование контейнера truecrypt от имени другого пользователя, сейчас...

Вывод слова в зашифрованном виде
Здравствуйте, делаю программу отгадай слово, подскажите как сделать чтобы рандомное слово...

Хранение данных в зашифрованном виде
Как лучше всего хранить данные типа серкетные ключи/пароли/токены от разных платежных и прочих api...

Менеджер паролей - Хранение пароля в зашифрованном виде
Пишу менеджер паролей. Для входа используется пароль. Есть возможность регистрации. Пароль хранится...

1
Администратор
Эксперт .NET
17553 / 13776 / 5298
Регистрация: 17.03.2014
Сообщений: 28,253
Записей в блоге: 1
02.11.2016, 00:46 2
javasharp1,
C#
1
2
3
4
5
6
7
8
// Шифруем строку
byte[] encrypted = EncryptStringToBytesAes(original, myAes.Key, myAes.IV);
 
// Выводим на экран в виде hex-строки
Console.WriteLine(BitConverter.ToString(encrypted));
 
// Еще можем вывести в виде base64 строки
Console.WriteLine(Convert.ToBase64String(encrypted));
Цитата Сообщение от javasharp1 Посмотреть сообщение
C#
1
2
// Зашифрованную строку переводим в массив байтов
byte[] encrypted = EncryptStringToBytesAes(original, myAes.Key, myAes.IV);
Это неверный комментарий. На вход функции подается незашифрованная строка которая внутри неё переводится в байты и шифруется. Правильнее написать просто "Шифруем строку"

Цитата Сообщение от javasharp1 Посмотреть сообщение
C#
1
2
// Если что-то не так выбрасываем исключение
Console.WriteLine("Error: {0}", e.Message);
Еще один неверный комментарий. Исключения выбрасываются с помощью throw. Приведенный код обрабатывает исключение путем вывода текста ошибки на экран.
2
02.11.2016, 00:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2016, 00:46
Помогаю со студенческими работами здесь

Как хранить данные в зашифрованном виде в базе данных
Я хочу чтобы пароли пользователей в моей БД хранились зашифрованными каким-нибудь алгоритмом, а...

Хранение документов формата .doc, pdf, rtf и т.д. в зашифрованном виде
Народ подскажите, как лучше реализовать хранение данных в зашифрованном виде? Задача у меня такая...

Способы шифрование данных. Передача данных на сервер в зашифрованном виде
Всем привет Хотелось бы услышать мнение опытных программистов о методах шифрования или о способах...

Как в зашифрованном тексте поместить пустую строку , которая имеется в исходном тексте?
Здравствуйте , подскажите пожалуйста как в зашифрованном тексте (textBox2) поместить пустую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru