Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шифрование AES 128. Отбросить ввод вектора инициализации. 
:(
    Опции темы
NURMS
Дата 24.8.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Проблема в этом векторе инициализации. Если его явно вводить, то приходится дописывать байты в шифруемый текст, чтобы сделать его 16-и кратным, что мне не нужно. Вот примерный код:

Также мне не нравятся выражения AES.Key = KEY и AES.IV = IV т.к. данным способом почему-то не сработало, а получилось при: AES.CreateEncryptor(KEY, IV). 

В данном коде текст шифруется, но каждый раз выдаёт разные значения.

Код

public static string Encrypt(string TextToEncrypt)
        {
            byte[] KEY = System.Text.UTF8Encoding.UTF8.GetBytes("1111111111111111");

            //byte[] IV = System.Text.UTF8Encoding.UTF8.GetBytes("1111111111111111");

            byte[] ENC = System.Text.UTF8Encoding.UTF8.GetBytes(TextToEncrypt);

            using (Rijndael AES = Rijndael.Create())
            {
                AES.KeySize = 128;
                AES.Key = KEY;

                //AES.IV = IV;
                //AES.BlockSize = 128;
                //AES.Padding = PaddingMode.None;

                MemoryStream MS = new MemoryStream();
                //CryptoStream CS = new CryptoStream(MS, AES.CreateEncryptor(KEY, IV), CryptoStreamMode.Write);
                CryptoStream CS = new CryptoStream(MS, AES.CreateEncryptor(), CryptoStreamMode.Write);

                CS.Write(ENC, 0, ENC.Length);
                CS.Close();

                return byteArrayToHexString(MS.ToArray());
            }
        }




Вот код на Java, который работает без ввода вектора инициализации:

Код

public static String Encrypt(String TextToEncrypt) throws Exception{
        
        byte[] ENCRYPT_ARRAY = TextToEncrypt.getBytes("UTF8");        
        byte[] KEY_ARRAY = "1111111111111111".getBytes("UTF8"); 
        
        Cipher EncryptionCifer = Cipher.getInstance("AES");
        SecretKeySpec SKS = new SecretKeySpec(KEY_ARRAY, "AES");
        EncryptionCifer.init(Cipher.ENCRYPT_MODE, SKS);
        byte[] ENCRYPTED_ARRAY = EncryptionCifer.doFinal(ENCRYPT_ARRAY);
        
        return byteArrayToHexString(ENCRYPTED_ARRAY);
    }

PM MAIL   Вверх
NURMS
Дата 24.8.2009, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Ладно, похоже можно IV и не отбрасывать, а использовать PaddingMode.PKCS7. Только вот в Java PKCS5. Вроде PKCS7 основан на PKCS5, и зашифрованные сообщения тоже получились одинаковыми. Буду надеяться, что разницы не дадут.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.