powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / RSA шифрование с помощью открытого ключа
25 сообщений из 79, страница 3 из 4
RSA шифрование с помощью открытого ключа
    #40087153
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
PetroNotC Sharp
НИЧЕГО НЕ ПОНЯТНО

лично мне ничего не понятно с самого первого сообщения
))))
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087161
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,

Цепочка - это термин мы тут придумали чтобы ты рассказал архитектуру системы.
Еще зовут юз кейсы. По русски ВИ вариант использования.
Пример
- взял чайник
- налил воду
Или у тебя
- сервер с АPi куда шлю запрос serv1.ru
- шлю запрос....
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087162
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На вопросы все в 22352658 не ответил.
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087163
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
3.
Сделать СВОЙ СЕРВЕР И КЛИЕНТ.
Отправил и сам получил дешифровал "мама мыла раму"?
?
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087165
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про http тоже не ответил.
Надо отвечать на все вопросы что есть в топике.
Работай!
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087223
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

автор-где цепочка?
-что значит рабочий? Как узнал?
- где curl?
- как можно неправильно получить токен? Половинку прочитал что ли? Наверно получил но неверно РАСКОДИРОВАЛ?
И ТАК ВО ВСЕМ ТВОЕМ ОТВЕТЕ. НИЧЕГО НЕ ПОНЯТНО


есть входные параметры предоставленные со стороны стороннего сервиса (appName, appPass, appKey)

1. Аутентификация, т.е. получения публичного ключа.
для этого необходимо сделать запрос на метод auth/getPubKey, указав appName и md5(appPass)
как итог получаем что то вроде этого:
Код: plaintext
{"PublicKey":"<RSAKeyValue><Modulus>pxDT....POM=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>","PublicKeyExpiration":"2021-08-9T14:36:16","code":0,"msg":"OK","timeStamp":"2021-07-30T09:36:01.6834073Z"}

далее Подпись метода:
Вызов каждого метода должен быть с подписью в заголовке запроса. Подписывается только хэш строки из appKey и вызываемого метода. Общий алгоритм подписи выглядит так:
1. Получить хэш метода путем конкатенации appKey и method
2. Подписать хэш публичным ключом с который был получен при аутентификации и получить токен
3. Добавить в запрос на сервер 2 заголовка с appName и Токеном

что было сделано в этой части:
1.
Код: java
1.
DigestUtils.md5Hex(applicationKey + method.toLowerCase())



2. Создаю PublicKey на основе публичного ключа (из аутентификации)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
        String _modulus = "pxDT...POM=";
        String _exponent = "AQAB";

        BigInteger modulus = new BigInteger(1, Base64Utils.decodeFromString(_modulus));
        BigInteger exponent = new BigInteger(1, Base64Utils.decodeFromString(_exponent));

        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        RSAPublicKeySpec rsaPublicKeySpec = new RSAPublicKeySpec(modulus, exponent);
        PublicKey publicKey = keyFactory.generatePublic(rsaPublicKeySpec);



далее сказано подписать публичным ключом хэшированный метод, но т.к. подпись осуществляется с помощью не публичного а приватного ключа и к тому же по рабочему примеру на C# полагаю что надо не подписать а шифровать публичным ключом
Код: java
1.
2.
3.
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] bytes = cipher.doFinal(text.getBytes(StandardCharsets.UTF_16LE));



далее вопрос, если до этого место правильно делаю скорее всего проблема будет в конце т.е. должен ли декодировать/кодировать в бейс64 для получение токена, и почему у меня опять таки отрицательные элементы получаются? как я помню отрицательные элементы изза того что полученный элемент больше чем 127...

ну в добавок, почему я говорю что гдето не так?, потому что третий этап (Добавить в запрос на сервер 2 заголовка с appName и Токеном) возвращает сообщение Could not decrypt token!

думаю я ответил на Ваши все вопросы, или что то остался?
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087225
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
ВИ напиши в 5-10 строк
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087229
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

нашел проблему!!!!!!!!!!!!! ))))))
делал все правильно за исключением специфики языка...
дело в том что в C# нет знака в байтах а я уже многократно спрашивал про отрицательных знаков.... и тог решением был
b & 0xFF
т.е. итог был после шифрования:
Код: java
1.
2.
3.
4.
         for (byte b : bytes) {
            i++;
            sb.append(b < 0 ? b & 0xFF : b).append(i < bytes.length ? "," : "");
        }



в Общем всем спасибо, помогли даже очень. )
есть ещё один вопрос но это уже сюда не относится для этого создам новую ветку скорее всего, если не получится сделать конечно, опять же большое спасибо!
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087230
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не умеешь писать то скажи.
Я начну а ты поправляй
ВИ:
1. первый запрос к serv1.ru auth/getPubKey и получаем строку (аутентификац)
2. По строке зашифровать RSA МЕТОДОМ мой запрос getСписокДолжников(дата)
3. Отправить GET с двумя заголовками заг1, заг2 и запросом шифром.
4. Получить ответ и.....
...
Так?
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087232
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
PetroNotC Sharp,

нашел проблему!!!!!!!!!!!!! ))))))
делал все правильно за исключением специфики языка...
дело в том что в C# нет знака в байтах а я уже многократно спрашивал про отрицательных знаков.... и тог решением был
b & 0xFF
т.е. итог был после шифрования:
Код: java
1.
2.
3.
4.
         for (byte b : bytes) {
            i++;
            sb.append(b < 0 ? b & 0xFF : b).append(i < bytes.length ? "," : "");
        }




в Общем всем спасибо, помогли даже очень. )
есть ещё один вопрос но это уже сюда не относится для этого создам новую ветку скорее всего, если не получится сделать конечно, опять же большое спасибо!

Я тоже не мог понять зачем после шифрования этот цикл?
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087234
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удачи!
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087236
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Молодец что бьешь на топики а не все в одну кучу +100
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087250
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

Я тоже не мог понять зачем после шифрования этот цикл?

а по другому как получить байты без отрицательных знаков?
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087257
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Зачем байты то? Это прогеры вашего сервака придумали?
Я выше сделал пример RSA по моей ссылке вверку.
Все работает. В токен и хидер запроса пишут символы текста а не байты
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087263
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
а по другому как получить байты без отрицательных знаков?
Не байты, а целые - нет StringBuffer.append(byte), но есть SB.append(int).
В Java целочисленные типы знаковые, а поэтому байты со значением от 0x80 до 0xFF будут приведены к целым со значениями от 0xFFFFFF80 до 0xFFFFFFFF.
И, кстати, тернарный оператор там лишний - проверка условия, скорее всего, замедлит код сильнее, чем безусловное маскирование, которое компилятор может ещё и соптимизировать до "копирование без знакового расширения".
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087333
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
А какой ещё вариант формирования криптографической ЭП?

Как это делается в RSA PKCS #1:
1. получаем хэш документа;
2. получаем хэш этого хэша;
3. применяем к результату алгоритм RSA с приватным ключом подписанта;
4. Результат форматируем определённым способом и нарекаем подписью.
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087357
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... хеш от хеша.

Что-то в этом есть подозрительное. Будь здесь парочка евреев типа Циммермана или Шнайера
(блин это не расизм а констатация) то они-бы наверняка нашли бы уязвимость или на худой
конец процитировали что-то умное из Талмуда.
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087364
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Хммм.. Если посмотреть ссылку выше, то там пример без всяких заумных хешей.
Просто два метода decode() и encode()
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087492
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Просто два метода decode() и encode()

Осталась сущая мелочь: найти между ними различие для RSA...
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087505
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
PetroNotC Sharp
Просто два метода decode() и encode()

Осталась сущая мелочь: найти между ними различие для RSA...
не понял тебя. Они есть по ссылке. Написаны и работают. Тестируй.
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087608
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
не понял тебя.

Алгоритм RSA это y = x d % m. причём как на шифрование, так и на расшифровывание. Разница только в используемом ключе.
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087613
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Да. Там две функции почти одинаковы
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40088185
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребят один момент
учитывая что у сервера прайвет кий, и у клиента паблик
то как определить кто шифровал?

т.е. я передаю паблик и Ивану и Артёму, как определить кто из них шифровал сообщение? или что то не правильно думаю?
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40088189
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если "кто шифровал", то я выступаю в роли расшифровывающего. А значит Иван и Артём передают мне свои публичные ключи.
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40088191
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
По логину паролю?
...
Рейтинг: 0 / 0
25 сообщений из 79, страница 3 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / RSA шифрование с помощью открытого ключа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]