Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для alhimera
5 / 5 / 2
Регистрация: 07.05.2014
Сообщений: 39

AES шифрование\дешифрование (перевести код с C#)

27.05.2014, 13:26. Показов 1927. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нашел алгоритм на C#, но к сожалению совершенно его не знаю (только начал изучать С++)

Реализация шифрования 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
/// <summary> /// Encrypts a string /// </summary>
        ///Text to be encrypted
        ///Password to encrypt with
        ///Salt to encrypt with
        ///Can be either SHA1 or MD5
        ///Number of iterations to do
        ///Needs to be 16 ASCII characters long
        ///Can be 128, 192, or 256
        /// <returns>An encrypted string</returns>
        public static string Encrypt(string plainText, string password,
             string salt = "Kosher", string hashAlgorithm = "SHA1",
           int passwordIterations = 2, string initialVector = "OFRna73m*aze01xY",
            int keySize = 256)
        {
            if (string.IsNullOrEmpty(plainText))
                return "";
            byte[] initialVectorBytes = Encoding.ASCII.GetBytes(initialVector);
            byte[] saltValueBytes = Encoding.ASCII.GetBytes(salt);
            byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
            PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes (password, saltValueBytes, hashAlgorithm, passwordIterations);
            byte[] keyBytes = derivedPassword.GetBytes(keySize / 8);
            RijndaelManaged symmetricKey = new RijndaelManaged();
            symmetricKey.Mode = CipherMode.CBC;
            byte[] cipherTextBytes = null;
            using (ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initialVectorBytes))
            {
                using (MemoryStream memStream = new MemoryStream())
                {
                    using (CryptoStream cryptoStream = new CryptoStream(memStream, encryptor, CryptoStreamMode.Write))
                    {
                        cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
                        cryptoStream.FlushFinalBlock();
                        cipherTextBytes = memStream.ToArray();
                        memStream.Close();
                        cryptoStream.Close();
                    }
                }
            }
            symmetricKey.Clear();
            return Convert.ToBase64String(cipherTextBytes);
        }
Реализация дешифрования 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
/// <summary> /// Decrypts a string /// </summary>
///Text to be decrypted
///Password to decrypt with
///Salt to decrypt with
///Can be either SHA1 or MD5
///Number of iterations to do
///Needs to be 16 ASCII characters long
///Can be 128, 192, or 256
/// <returns>A decrypted string</returns>
public static string Decrypt(string cipherText, string password,
   string salt = "Kosher", string hashAlgorithm = "SHA1",
   int passwordIterations = 2, string initialVector = "OFRna73m*aze01xY",
    int keySize = 256)
{
    if (string.IsNullOrEmpty(cipherText))
        return "";
    byte[] initialVectorBytes = Encoding.ASCII.GetBytes(initialVector);
    byte[] saltValueBytes = Encoding.ASCII.GetBytes(salt);
    byte[] cipherTextBytes = Convert.FromBase64String(cipherText);
    PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(password, saltValueBytes, hashAlgorithm, passwordIterations);
    byte[] keyBytes = derivedPassword.GetBytes(keySize / 8);
    RijndaelManaged symmetricKey = new RijndaelManaged();
    symmetricKey.Mode = CipherMode.CBC;
    byte[] plainTextBytes = new byte[cipherTextBytes.Length];
    int byteCount = 0;
    using (ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initialVectorBytes))
    {
        using (MemoryStream memStream = new MemoryStream(cipherTextBytes))
        {
            using (CryptoStream cryptoStream = new CryptoStream(memStream, decryptor, CryptoStreamMode.Read))
            {
                byteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
                memStream.Close();
                cryptoStream.Close();
            }
        }
    }
    symmetricKey.Clear();
    return Encoding.UTF8.GetString(plainTextBytes, 0, byteCount);
}
AES в использовании

Что представляют собой аргументы этих функций:
HashAlgorithm может быть SHA1 или MD5.
InitialVector должен быть строкой размерностью 16 ASCII символов.
KeySize может быть 128, 192, или 256.
The Salt выступает в роли второго ключа.
PasswordIterations сколько раз алгоритм выполнится над текстом.
Не забываем подключать необходимые сборки System.Security.Cryptography

C#
1
2
using System.Security.Cryptography;
string FinalValue=AESEncryption.Encrypt("Text", "Password1", "Password2", "SHA1", 2, "16CHARSLONG12345", 256);
Помогите пожалуйста реализовать это на c++/cli win forms.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2014, 13:26
Ответы с готовыми решениями:

Rot13 шифрование/дешифрование код c++
Проблема с пробелами. Как сделать так, чтобы можно было работать с пробелами? Спасибо // ROT13.cpp: определяет точку входа для...

Шифрование и дешифрование методом Цезаря. Необходимо разобрать код
Здравствуйте, нашел на просторах форума реализацию шифрования методом Цезаря, но не особо разбираюсь в программировании, кто может...

Не выполняется AES дешифрование
Не получается дешифровать файл, не могу понять в чем проблема. Скорее всего с байтами outdata нагрешил public void Encrypt128(byte...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.05.2014, 13:26
Помогаю со студенческими работами здесь

AES шифрование
Видел кучу тем на эту тему, но так для себя решения и не нашел, здесь реализация заточена на текст, но мне надо шифровать массивы байт и...

Aes шифрование
Привет, нужна помощь, есть программная реализация aes, помогите определить в каком режиме шифрования она выполнена , если таковой вообще...

Шифрование AES
Прочитал статью на одном из сайтов и услышал такую тему, что такие алгоритмы, как AES-28; AES-192 и AES-256 используют ключи и длины...

AES шифрование
Ребят помогите разобраться с расшифровкой текста из фаила. На клиенте текст криптуется средствами aes шифрования, далее перегоняется в...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru