Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для Volga_Olga
1 / 1 / 0
Регистрация: 07.08.2022
Сообщений: 29

Почему в хешировании AES добавляется тире? Например: A0-1F-C3-F1, вместо A01FC3F1

02.02.2023, 16:21. Показов 1036. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста почему в хешировании AES добавляется -.так например: A0-1F-C3-F1.должно быть так A01FC3F1.как это исправить?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.02.2023, 16:21
Ответы с готовыми решениями:

вместо русских букв тире (-)
на сайте создаю новость после перехода в полную версию новости, в url вместо русских букв - тире причем тире стоит на месте пробелов ...

Вывести словосочетания из файла, вместо пробелов написать тире и записать ее в другой файл
Нужно считать словосочетания из файла, вместо пробелов написать тире и записать ее в другой файл #include <iostream> #include...

Вместо обновления добавляется новая строка в БД но с изменениями
Есть такой код: public async Task<IActionResult> AdminEdit(string NameHentai) { ...

19
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,450
02.02.2023, 16:22
Volga_Olga, потому, что ошибка в строке №7
5
 Аватар для Volga_Olga
1 / 1 / 0
Регистрация: 07.08.2022
Сообщений: 29
02.02.2023, 16:24  [ТС]
Я поняла.сейчас покажу
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,660
Записей в блоге: 3
02.02.2023, 16:25
Цитата Сообщение от Usaga Посмотреть сообщение
потому, что ошибка в строке №7
Цитата Сообщение от Volga_Olga Посмотреть сообщение
Я поняла.сейчас покажу
0
 Аватар для Volga_Olga
1 / 1 / 0
Регистрация: 07.08.2022
Сообщений: 29
02.02.2023, 16:28  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private byte[] DeriveKeyFromPassword(string password)
        {
            var emptySalt = Array.Empty<byte>();
            var iterations = 1000;
            var desiredKeyLength = 16; // 16 bytes equal 128 bits.
            var hashMethod = HashAlgorithmName.SHA384;
           // var hashMethod = HashAlgorithmName.SHA256;
            return Rfc2898DeriveBytes.Pbkdf2(Encoding.Unicode.GetBytes(password),
                                             emptySalt,
                                             iterations,
                                             hashMethod,
                                             desiredKeyLength);
        }
 
       
        private byte[] IV =
        {
            0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
            0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16
        };
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,450
02.02.2023, 16:34
Volga_Olga, этот код возвращает массив байт. Никаких "-" тут нет. Покажите какой-нибудь другой фрагмент кода, который не относится к вашему вопросу. Это так же не поможет в решении проблемы.
1
 Аватар для Volga_Olga
1 / 1 / 0
Регистрация: 07.08.2022
Сообщений: 29
02.02.2023, 16:37  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        public async Task<byte[]> EncryptAsync(string clearText, string enteredText)
        {
            using Aes aes = Aes.Create();
            aes.Key = DeriveKeyFromPassword(enteredText);
            aes.IV = IV;
 
            using MemoryStream output = new();
            using CryptoStream cryptoStream = new(output, aes.CreateEncryptor(), CryptoStreamMode.Write);
 
            await cryptoStream.WriteAsync(Encoding.Unicode.GetBytes(clearText));
            await cryptoStream.FlushFinalBlockAsync();
 
            return output.ToArray();
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        private byte[] DeriveKeyFromPassword(string password)
        {
            var emptySalt = Array.Empty<byte>();
            var iterations = 1000;
            var desiredKeyLength = 16; // 16 bytes equal 128 bits.
            var hashMethod = HashAlgorithmName.SHA384;
           // var hashMethod = HashAlgorithmName.SHA256;
            return Rfc2898DeriveBytes.Pbkdf2(Encoding.Unicode.GetBytes(password),
                                             emptySalt,
                                             iterations,
                                             hashMethod,
                                             desiredKeyLength);
        }
C#
1
2
3
4
5
6
       
        private byte[] IV =
        {
            0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
            0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16
        };
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        public async Task<string> DecryptAsync(byte[] encrypted, string enteredText)
        {
            using Aes aes = Aes.Create();
            aes.Key = DeriveKeyFromPassword(enteredText);
            aes.IV = IV;
 
            using MemoryStream input = new();
            using CryptoStream cryptoStream = new(input, aes.CreateDecryptor(), CryptoStreamMode.Read);
 
            using MemoryStream output = new();
            await cryptoStream.CopyToAsync(output);
 
            return Encoding.Unicode.GetString(output.ToArray());
        }
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,450
02.02.2023, 16:40
Volga_Olga, и? В каком месте у вас тут дефисы появляются? Ни одна строка из текущего кода такого не делает.
0
 Аватар для Volga_Olga
1 / 1 / 0
Регистрация: 07.08.2022
Сообщений: 29
02.02.2023, 16:43  [ТС]
Это весь код который хеширует в байты.

Добавлено через 42 секунды
В этом и проблема откуда они появляются
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
02.02.2023, 16:57
Цитата Сообщение от Volga_Olga Посмотреть сообщение
В этом и проблема откуда они появляются
Наверно где-то спрятался BitConverter.ToString() метод?
1
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,450
02.02.2023, 16:57
Цитата Сообщение от Volga_Olga Посмотреть сообщение
A0-1F-C3-F1
Это не байты, это - текстовое представление этих байтов. Теперь вопрос: где вы это представление получаете? Точно не в коде, который выше показали.
0
 Аватар для Volga_Olga
1 / 1 / 0
Регистрация: 07.08.2022
Сообщений: 29
02.02.2023, 17:06  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        public async Task<IActionResult> EncryptText(string enteredText)
        {
            var encryptionService = new EncryptService();
            var encrypted = await encryptionService.EncryptAsync("We use encryption to obscure a piece of information.",
                                                                 enteredText);
                        
            var result = BitConverter.ToString(encrypted);
            var model = new ContractModel() { Name = result };
            await _repository.SaveEncriptTextToDatabaseAsync(model);
 
            var decrypted = await encryptionService.DecryptAsync(encrypted, enteredText) ;
            
            return Ok(decrypted);
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
02.02.2023, 17:18
Лучший ответ Сообщение было отмечено Volga_Olga как решение

Решение

Volga_Olga, воот, теперь больше правды.
К строке BitConverter.ToString() добавьте Replace:
C#
1
var result = BitConverter.ToString(encrypted).Replace("-", string.Empty);
Добавлено через 2 минуты
И необязательно добавлять Async в конце имени метода, если у вас только одна версия (асинхронная) этого метода.
Разве вам глаза не мозолит этот суффикс?

Добавлено через 1 минуту
C#
1
await _repository.SuperDuperFullyFledgedNamedMethodWithAFullDescriptionAsync(model);


Добавлено через 2 минуты
Можно пнуть лида поднять вопрос на обсуждение о таком codestyle.
2
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3439 / 2759 / 575
Регистрация: 04.09.2018
Сообщений: 8,660
Записей в блоге: 3
02.02.2023, 17:40
Цитата Сообщение от IamRain Посмотреть сообщение
И необязательно добавлять Async в конце имени метода, если у вас только одна версия (асинхронная) этого метода.
Ну как сказать. В разных конторах свой стиль, и по общему правилу, если это асинхронный метод, то лучше бы это обозначить сразу.

Добавлено через 1 минуту
await тоже может отсутствовать, если предполагается синхронный вызов.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
02.02.2023, 23:29
Цитата Сообщение от IamRain Посмотреть сообщение
BitConverter.ToString(encrypted).Replace ("-", string.Empty);
Volga_Olga, не оспаривая этого решения, но если у вас проект .Net 5+, то есть ещё метод Convert.ToHexString(Byte[]).
1
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,450
03.02.2023, 04:50
Цитата Сообщение от wizard41 Посмотреть сообщение
Ну как сказать. В разных конторах свой стиль, и по общему правилу, если это асинхронный метод, то лучше бы это обозначить сразу.
В этом вопросе я больше согласен с IamRain. Если все методы в классе (ну или большая часть) асинхронные, то Async в их именах превращается в банальный мусор не несущий никакой полезной информации.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
03.02.2023, 08:43
Цитата Сообщение от Usaga Посмотреть сообщение
В этом вопросе я больше согласен с IamRain. Если все методы в классе (ну или большая часть) асинхронные, то Async в их именах превращается в банальный мусор не несущий никакой полезной информации.
Ладно ещё методы возвращающие таски можно определить как асинхронные.
А void асинхронные методы как определить?
Если нет постфикса, то придётся лезть в документацию.

Наверное, всё же правила именования не должны быть разными в разных классах?
Если используются разные типы в которых разные правила именования, то, как мне кажется, это легко может сбить с толку, запутать.

Добавлено через 38 минут
Да, и таск методы могут быть асинхронными, а могут просто возвращать таск, даже не запущенный.
И "обращаться" с ними нужно по разному.

То есть как бы понятна, идея и логичность "лишнего постфикса", когда он есть у всех методов.
Но при использовании многих типов, в которых у некоторых методов есть этот постфикс, а у других нет...., как мне кажется, не лучшее решение.
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,450
03.02.2023, 08:52
Цитата Сообщение от Элд Хасп Посмотреть сообщение
А void асинхронные методы как определить?
Такие методы не должны вызываться из вашего кода. Это - только обработчики событий из WF\WPF\etc.
1
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
03.02.2023, 08:55
Элд Хасп, вы как всегда все усложняете. Никто не пишет async void методы - это плохая практика.
Пишут async Task-и в таком случае.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
03.02.2023, 09:06
Цитата Сообщение от IamRain Посмотреть сообщение
Никто не пишет async void методы - это плохая практика.
"Верхний метод", то есть тот с которого начинается цепочка асинхронных вызовов всегда не ожидающий. Иначе никакой параллельной (к основному потоку) обработки и не выйдет.
Не вижу причин почему этот метод не может быть void.

Цитата Сообщение от Usaga Посмотреть сообщение
Это - только обработчики событий из WF\WPF\etc.
Почти всегда - да.
Но в общем случае таким может любой метод ожидать результат которого некому.

Добавлено через 4 минуты
И опять таки это не отменяет путаницы между таск методами возвращающими задачу и асинхронными методами.

Ещё раз пишу, что бы неправильно меня не понимали.
На практике, скорее всего такого не встретится.
Но в общем случае, может у кого-то и возникают такие ситуации.
А правила именования они как бы должны быть "на все случаи жизни".

Так же эти правила - это не библия на которую нужно молиться.
Они локальны для каждой группы разработчиков, нужны для взаимопонимания в коллективе разработчиков и являются частью правил разработки в этом коллективе.
Если есть понятные и известные всем (в коллективе) правила, в которых действительно этот постфикс выглядит лишним, то конечно его не стоит использовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.02.2023, 09:06
Помогаю со студенческими работами здесь

Надо удалить «двоечника» с наименьшими баллами и вместо него вставить тире или хотя бы нуль
Надо удалить «двоечника» с наименьшими баллами и вместо него вставить тире или хотя бы нуль. Ответ модератора кота Бегемота на такой...

Считать слова из файла, вместо пробелов между словами, вставить тире и записать ее в другой файл
Считать слова из файла, вместо пробелов между словами, вставить тире и записать ее в другой файл Выходят ошибки при компиляции Debug...

На ленточную форму добавляется несколько кнопок вместо одной
Добавляю на форму кнопку, при этом появляется 3 кнопки с одинаковым названием. При выделении одной из них выделяются остальные, при...

Информация добавляется в первую строку datagridview вместо последней
Подключил БД к проекту. На форме &quot;Список клиентов&quot; привязал таблицу &quot;Клиенты&quot; к datagridview. При нажатии кнопки &quot;Добавить&quot;...

Скажите почему например флешка на 4 ГБ а на ней ёмкость всего 3.73 ГБ почему это так?
Скажите почему например флешка на 4 ГБ а на ней ёмкость всего 3.73 ГБ почему это так? Почему не сделают ровно 4 ГБ ну или приближённо к...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 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
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru