1112 / 554 / 319
Регистрация: 21.06.2012
Сообщений: 1,854
|
|||||||||||
1 | |||||||||||
Подскажите как справиться с алгоритмом AES-12825.07.2017, 11:42. Показов 1713. Ответов 7
Метки нет Все метки)
(
Приветствую всех!
Шифрую данные ключом из 16 бит:
И еще один вопрос, как записать в ключ, байт старше 126? То есть, я не могу записать в ключ, к примеру, такой байт: 0b10000000
0
|
|
25.07.2017, 11:42 | |
Ответы с готовыми решениями:
7
Как реализовать AES (128 BIT) шифрование? AES-128 Шифрование AES 128. Шифрование AES 128 в QT |
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
|
|
27.07.2017, 09:11 | 2 |
Первичный ключ шифрования для первого блока создается на основе вашего ключа и рандомного 128-битного значения операцией XOR, что и обуславливает уникальность каждого вывода.
1
|
1112 / 554 / 319
Регистрация: 21.06.2012
Сообщений: 1,854
|
|
27.07.2017, 16:32 [ТС] | 3 |
А как потом расшифровывать кодированный текст? Я сохраняю в файл массив байтов (кодированного текста (.юkџg~м*Е¤С»`w)). Но когда пытаюсь раскодировать эти байты тем-же ключом, то выскакивает ошибка: Exception in thread "main" javax.crypto.BadPaddingException: Given final block not properly padded
Если я закодирую одно и тоже слово 3 раза одним ключом, то шифротекст будет разным, и как его потом декодировать одним ключом?
0
|
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
|
|
27.07.2017, 17:03 | 4 |
![]() Решение
возможно, причина в том, что текст был дополнен нулевыми значениями для выполнения условия кратности 128 битам, а ваш код не предусматривает этого. Попробуйте использовать текст, который будет заведомо кратен 128.
Также, в добавок к предыдущему вопросу, попробуйте шифровать текст не используя режим СВС, тогда не будет добавлено рандомное 128-битное значение, и шифротекст каждый раз будет один и тот же.
1
|
1112 / 554 / 319
Регистрация: 21.06.2012
Сообщений: 1,854
|
|
27.07.2017, 17:07 [ТС] | 5 |
Ага, понял, надо было передавать еще и IvParameterSpec. Хотя не понял как он работает...
Как записать в ключ байт старше 127 (к примеру такой: 0b10000001)? Добавлено через 2 минуты теперь понял для чего нужен IvParameterSpec. Спасибо!
0
|
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
|
|
27.07.2017, 17:22 | 6 |
![]() Решение
полагаю либо использовать целочисленный тип данных, типа BYTE или unsigned char, либо использовать диапазон не 0..255, а -127..127
Значение 0b10000001 соответствует -127 (минус сто двадцать семь) Добавлено через 3 минуты на самом деле 0, 1, ... , 127, -127, -126, ... , -1
1
|
1112 / 554 / 319
Регистрация: 21.06.2012
Сообщений: 1,854
|
||||||
27.07.2017, 17:36 [ТС] | 7 | |||||
Спасибо!
Вот как, оказывается, можно:
0
|
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
|
|
27.07.2017, 17:51 | 8 |
![]() Решение
Полагаю что тип, которым определяется 0b11111111 является типом int. А при преобразовании в int наше значение равно 255. Значение 127 ассоциируется и с int и с byte, а значение 255 или 129 с byte уже не сопоставимо. Особенности Java.
Для решения проблемы требуется явное преобразование типов
1
|
27.07.2017, 17:51 | |
Помогаю со студенческими работами здесь
8
AES-128 (Crypto API) не шифрует Aes 128 cbc неполная расшифровка Шифрование файлов AES алгоритмом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |