|
7 / 7 / 1
Регистрация: 27.08.2009
Сообщений: 99
|
|||||||||||||||||||||||
RSA шифрование17.03.2013, 09:58. Показов 33060. Ответов 20
Метки нет (Все метки)
Здравствуйте. Нашел реализацию RSA для Java в интернете. Немного переделал класс, добавив getters и setters, а так же перенес инструкции из конструктора в метод init.
Вот класс реализации RSA шифрования:
На сервере делаю следующие действия:
Хотелось бы узнать, нет ли уязвимости в данном алгоритме? И нужно ли посылать modulus? Может я что-то не так понял? Добавлено через 5 минут Ведь в документации ничего не упоминается про modulus, поэтому у меня такие подозрения
0
|
|||||||||||||||||||||||
| 17.03.2013, 09:58 | |
|
Ответы с готовыми решениями:
20
RSA шифрование Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at pr4.RSA.main(RSA.java:44) Шифрование RSA в Java |
|
7 / 7 / 1
Регистрация: 27.08.2009
Сообщений: 99
|
|
| 17.03.2013, 14:38 [ТС] | |
|
Еще хотелось узнать одну вещь. Как известно, вычисление RSA ключей довольно дорогостоящая процедура. Можно ли передать процедуру генерации ключа на клиента? Мне кажется, что так везде и делают
))) Правда, если на клиенте будет генерироваться заведомо слабый ключ, то это является очень крупной уязвимостью. Поэтому, я думаю, на сервере намного надежней генерировать ключи.
0
|
|
|
|
|
| 17.03.2013, 15:27 | |
|
Ключи можно нагенерить загодя и сложить в базу
например ночами или в периоды простоя сервака, а потом выдавать пользователям уже готовые, ну и потом я не думаю что прямо каждый раз нужен уникальный ключ, достаточно их держать тыщ 10 в пуле и рандомно выбирать из него
1
|
|
|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
||
| 17.03.2013, 16:40 | ||
|
Стандартная реализация RSA из Java вполне подойдёт.
0
|
||
|
7 / 7 / 1
Регистрация: 27.08.2009
Сообщений: 99
|
||
| 17.03.2013, 17:17 [ТС] | ||
|
Все бы было хорошо. Но стандартные библиотеки не позволяют дешифрововать сообщения на основе modulus и publicKey, так как нельзя установить кастомный modulus, который пришел с другой стороны и расшифровать с помощью него закодированное сообщение.
Добавлено через 4 минуты ![]() Добавлено через 3 минуты Только вот можно ли использовать один и тот же privateKey и modulus два или три раза подряд? Не приведет ли это к уязвимости? Добавлено через 10 минут По идее, клиент никогда не знает privateKey сервера, а знает только modulus и publicKey, на основе которого он будет расшифровывать сообщения и отправлять обратно серверу. Получается, можно в своем арсенале иметь 2-3 разновидности (пары) ключей, и этого хватит? Я понимаю, что есть шанс взлома ключа за определенный промежуток времени, поэтому их нужно менять каждые 2 месяца, к примеру.
0
|
||
|
|
||
| 17.03.2013, 17:22 | ||
|
Шансы что кто нибудь будет ломать ваше приложение в лоб через дешифровку предельно низки, гораздо проще поискать уязвимости вашей платформы или библиотек вашего проекта
0
|
||
|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|
| 17.03.2013, 18:03 | |
|
0
|
|
|
7 / 7 / 1
Регистрация: 27.08.2009
Сообщений: 99
|
|
| 17.03.2013, 18:35 [ТС] | |
|
А что используется для расшифровки? Можете привести пример?
0
|
|
|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|
| 17.03.2013, 18:55 | |
|
Личный ключ, например.
0
|
|
|
7 / 7 / 1
Регистрация: 27.08.2009
Сообщений: 99
|
||
| 17.03.2013, 18:57 [ТС] | ||
|
0
|
||
|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|
| 17.03.2013, 19:03 | |
|
Если вам нужна цифровая подпись, то в Java есть средства и для этого, например класс Signature, где вы используете нужный алгоритм, например RSA. Вот только обычно подписывают не само сообщение, а его хеш-значение, поэтому при подписи вы указываете ещё и алгоритм хеширования.
0
|
|
|
7 / 7 / 1
Регистрация: 27.08.2009
Сообщений: 99
|
|
| 17.03.2013, 19:48 [ТС] | |
|
А класс Signature использует двухстороннее рукопожатие?
Например: 1. Сервер генерирует privateKey и publicKey. Затем, генерирует рандомное проверочное сообщение из 16 байт (к примеру). Отправляет его клиенту, а также отправляет publicKey и modulus (который был сгенерирован вместе с ключами). 2. Клиент в свою очередь принимает проверочное сообщение, а также publicKey и modulus. Добавляет к нему, к примеру число 1535 (соль). Зашифровывает обратно, и посылает серверу. А также посылает серверу свой сгенерированный publicKey и modulus (чтобы, тот мог отправлять зашифрованные сообщения обратно клиенту). 3. Сервер в свою очередь знает, какое должно прийти проверочное сообщение. Но не знает, какая должна прийти соль. Она будет на конце проверочного сообщения присланного от клиента. Теперь сервер знает соль сообщения. Он добавляет ее в начало сообщения, которое он хочет послать, а затем добавляет, например 128-битный ключ для AES шифрования. Шифрует созданное сообщение и посылает обратно клиенту. 4. Клиент, в свою очередь сравнивает первые символы сообщения, если они совпадают с его солью, то все хорошо. Остальная часть сообщения будет расцениваться как AES-ключ, по которому дальше будет происходить шифрование между клиентом и сервером. И еще такой вопрос, как быть, если сервер и клиент имеют разные языки реализации. Например, один написан на Java, а другой на Python или PHP, C В итоге, все равно придется посылать modulus и publicKey + Если ты понимаешь как устроен алгоритм, он будет намного надежнее в твоем исполнении. Поэтому предпочитаю изучать механику, чего-бы то ни было
0
|
|
|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|||
| 17.03.2013, 20:01 | |||
|
0
|
|||
|
7 / 7 / 1
Регистрация: 27.08.2009
Сообщений: 99
|
|
| 17.03.2013, 20:03 [ТС] | |
|
Ну я просто не вижу смысла использовать сертификаты, если это можно реализовать с помощью чистого RSA
0
|
|
|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|
| 17.03.2013, 20:08 | |
|
Если не видите смысла - не используйте. Если возникает вопрос по поводу совместимости между различными платформами, используёте поток байтов, проблем не будет, если их правильно отправлять и принимать.
0
|
|
|
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 2
|
|
| 10.11.2014, 22:28 | |
|
Что такое последняя строка? У Стринга нет такого метода getBytes().
0
|
|
|
206 / 206 / 71
Регистрация: 25.02.2014
Сообщений: 569
|
|
| 10.11.2014, 22:40 | |
|
MORA, Вовремя....
Это метод BigInteger да и я тупанул
0
|
|
|
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 2
|
|
| 10.11.2014, 23:48 | |
|
Раз уж есть тут живые люди, то вопрос №2.
Мы выбрали N = 1024 бит. Зачем оно делится потом на 2? И еще. Если сообщение начинается на русскую букву, то оно превращается в отрицательное число и дальше неправильно шифруется/дешифруется. Как этого избежать? И как все-таки сделать обратное преобразование БигИнт в строку?
0
|
|
| 10.11.2014, 23:48 | |
|
Помогаю со студенческими работами здесь
20
Java rsa шифрование RSA в JAVA алгоритм RSA Доработка кода с rsa RSA и кодировка в JAVA Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|