|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Здравствуйте всем! ранее не сталкивался и не совсем понимаю как сделать правильно: есть некий сгенерированный открытый ключ Код: plaintext
с помощью него должен шифровать строку: и делаю что то вроде этого: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
правильно ли я шифрую текст MyTestText (по ТИ текст должен быть представлен в МД5) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 17:52 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Вы не можете шифровать используя только открытый ключ. Асимметричное шифрование всегда использует ключевую пару - открытый ключ (как правило, "обёрнут" в сертификат) и закрытый ключ, хранящийся "где-то". Из-за очень низкой скорости асимметричное шифрование используют только для очень коротких данных: электронная подпись (хэш плюс имитовставка) или (ваш случай) для безопасной передачи ключа симметричного шифрования (которое на порядки быстрее). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 18:07 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Не понял как закрытый ключ? Закрытый же должен храниться только у поставщика вроде как? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 18:27 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, да, все верно. У тебя есть открытый ключ, которым ты можешь зашифровать данные. У поставщика будет закрытый ключ, которым он может расшифровать данные. Как правило когда речь заходит про онлайн общение (узлы общаются друг с другом интерактивно), то данные шифруют симметричным ключом (например, AES). Потому как асимметричный (RSA) работает намного медленней. Когда же речь про оффлайн общение (например, зашифровать письмо), то да - приходится использовать асимметричное шифрование. Твой же пример выглядит рабочим (ты не сказал что у тебя не работает), однако не понятно чего ты пытаешься добиться. Ведь ты шифруешь не текст, а MD5 хеш от текста. Ну расшифруют с той стороны этот хеш, а что с ним делать будут? Возможно ты перепутал и нужно не зашифровать, а подписать сообщение? Т.е. само сообщение шлем (может даже и в открытом виде), а затем еще подпись чтоб убедиться что подписал именно ты. В таком случае мы сначала вычисляем хеш, а затем прогоняем через RSA подпись (не шифрование). Но подпись наоборот - делают закрытым ключом. Ведь принимающая сторона хочет убедиться что это именно ты послал. В общем дай больше информации. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 18:54 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, интересно да оказывается на самом деле нужно подписать... т.е. вот такие этапы: 1. Получить хеш метода путем конкатенации Ключа Приложения и вызываемого метода 2. Подписать хеш публичным ключом и получить токен т.е. получается все это время шифровал а не подписал походу... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 19:46 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар 1. Получить хеш метода путем конкатенации Ключа Приложения и вызываемого метода 2. Подписать хеш публичным ключом и получить токен т.е. получается все это время шифровал а не подписал походу... 1. Конкатенировать ничего не надо, первый шаг - это просто получить хеш (aka digest) от текста. 2. Получить подпись этого хеша твоим приватным ключом. Ведь только ты должен мочь подписаться под своим сообщением. Ну и самому хеш вычислять не надо, вот пример отсюда , Java сама и хеш подсчитает, и подпись сформирует: Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Дальше если надо - эти байты можно в строку превратить то ли в Base64, то ли в hex. Но с той стороны (которая будет проверять подпись) нужно чтоб они могли проверить подпись. Т.е. им нужны будут: твой публичный ключ, эта подпись, а так же контент который был подписан. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 20:08 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, авторНе совсем: 1. Конкатенировать ничего не надо, первый шаг - это просто получить хеш (aka digest) от текста. 2. Получить подпись этого хеша твоим приватным ключом. Ведь только ты должен мочь подписаться под своим сообщением. так я поднял техИнструкцию и там точно так написано и у меня нет приватного ключа у меня есть только Код: plaintext
завтра на работе попробую, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 20:23 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
У вас должна быть собственная ключевая пара. Асимметричное шифрование выполняется на паре "открытый ключ получателя - закрытый ключ отправителя". Расшифровка делается на паре "закрытый ключ получателя - открытый ключ отправителя". Для электронной подписи, которую должны проверять все, создаётся эфемерная ключевая пара. Далее формируем имитовставку (псевдослучайное число) и криптостойкий хэш сообщения (дайджест). Шифруем дайджест с имитовставкой на паре "эфемерный открытый ключ - собственный закрытый ключ" и уничтожаем эфемерный открытый ключ. К зашифрованным данным добавляем пару "собственный открытый ключ - эфемерный закрытый ключ" и получаем электронную подпись. Проверяющий самостоятельно вычисляет дайджест сообщения, расшифровывает данные ЭП и сверяет вычисленный дайджест с имеющимся. Совпадение гарантирует, что шифрование выполнял владелец ключевой пары, открытый ключ которой "приложен" к ЭП. Имитовставка гарантирует, что каждая электронная подпись (даже одинаковых данных) будет уникальной. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 04:37 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
если я правильно понял методы должны выгладит примерно вот так? т.е. то что оттуда приходит <RSAKeyValue><Modulus>2+VvfVJXR7JU...Fl7XHFT2YRvUP0=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue> для меня будет закрытым ключом и с помощью него подписываю хэшировнный текст? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 08:10 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Basil A. Sidorov У вас должна быть собственная ключевая пара. Асимметричное шифрование выполняется на паре "открытый ключ получателя - закрытый ключ отправителя". Расшифровка делается на паре "закрытый ключ получателя - открытый ключ отправителя". Basil A. Sidorov Для электронной подписи, которую должны проверять все, создаётся эфемерная ключевая пара. Шифруем дайджест с имитовставкой на паре "эфемерный открытый ключ - собственный закрытый ключ" и уничтожаем эфемерный открытый ключ. К зашифрованным данным добавляем пару "собственный открытый ключ - эфемерный закрытый ключ" и получаем электронную подпись. Музаффар , да, это похоже на работающий код. Вот только еще обрати внимание на это: Basil A. Sidorov Далее формируем имитовставку (псевдослучайное число) Имитовставка гарантирует, что каждая электронная подпись (даже одинаковых данных) будет уникальной. Код: java 1. 2. 3. 4.
Ну а затем подписывать как подписывал. Если твой продукт очень важен и его обязательно нужно сделать правильно, то вам прийдется нанять какого-то security эксперта. Я эту тему знаю постольку поскольку. Не знаю насчет Basil A. Sidorov. На то что тебе на программерских форумах говорят про security нужно смотреть скептически. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 10:34 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, ещё один интересный момент, в техинструкции показан пример на СиШарп... но у этого кода результате всегда положительные числа, у меня как положительные так и отрицательные... скорее всего я что то пропускаю, а сам не совсем знаком с этим языком... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 11:08 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Тут видимо речь про сохранение конфединциальности. Т.е. никто кроме проверяющего не знает кем было подписано сообщение. Открытый ключ, по своей сути, предполагает сколь угодно широкое распространиение. "Как есть" или "завёрнутым" в сертификат - не так важно.Если же нам нужна обычная подпись, то шифровать (и генерировать эфемерные ключи) не надо насколько мне известно.А теперь подумайте, только медленно и вдумчиво: как без эфемерной ключевой пары обеспечить проверку электронной подписи неопределённым (неограниченным) кругом лиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 12:03 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар , в C# и на Java все будет похоже работать. Там нет проблем прочесть код на другом языке, важно - понимать механизмы, а синтаксис и так поймешь. Музаффарно у этого кода результате всегда положительные числаЭто значит что в байтах не заполнен 1ый бит. Скорей всего это не бинарные данные, а ASCII текст. Бинарные подписи могут закодировать в Base64 или hex для удобства. И не нужно пытаться сравнивать подписи по форме байт. У тебя есть способ проверить эту подпись: Код: java 1. 2. 3. 4. 5.
Basil A. Sidorov Stanislav Bashkyrtsev Тут видимо речь про сохранение конфединциальности. Т.е. никто кроме проверяющего не знает кем было подписано сообщение. Basil A. Sidorov Открытый ключ, по своей сути, предполагает сколь угодно широкое распространиение. "Как есть" или "завёрнутым" в сертификат - не так важно.Если же нам нужна обычная подпись, то шифровать (и генерировать эфемерные ключи) не надо насколько мне известно. Я не вижу проблем: 1. Мой открытый ключ публикуется в доверенном хранилище (GPG хранилище которому доверяет третья сторона, или на моем сайте, или у меня его можно запросить лично). 2. Я подписываю своим закрытым ключом данные и эти открытые данные распространяю вместе с открытой подписью. 3. Мои коллеги могут скачать как данные, так и подпись. Также они могут получить мой открытый ключ из доверенного хранилища. И проверить подпись. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 13:09 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Выше в своем сообщении ты писал про проверку неограниченным кол-вом лиц 2. Я подписываю своим закрытым ключом данные и эти открытые данныеПомедитируйте над тем, что именно содержат открытые данные ЭП и как именно они проверяются. Ну или почему алгоритмы (де)шифрования на ключевых парах называются а симметричными. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 13:19 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, авторв C# и на Java все будет похоже работать. Там нет проблем прочесть код на другом языке, важно - понимать механизмы Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
в том то дело, по ТИ написано надо подписать а тут вроде как шифруется? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 13:29 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, Цифровая подпись ДОКУМЕНТА? Или устраивает https по ГОСТ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 13:44 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Basil A. Sidorov А теперь подумайте, только медленно и вдумчиво: как без эфемерной ключевой пары обеспечить проверку электронной подписи неопределённым (неограниченным) кругом лиц. Внезапно: распространить среди них открытый ключ. В сертификате или явно. PS: На самом деле тут маленькая терминологическая путаница: с асимметричными алгоритмами открытый текст можно сначала "расшифровать" закрытым ключом, а потом "зашифровать" открытым для получения оригинала. Это и происходит в процессе подписи, но при чтении его описания - вгоняет в ступор. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 13:49 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, не совсем документа, вот что написано в ТИ Вызов каждого метода должен сопровождаться подписью в заголовке запроса. Подписывается только хеш строки состоящей из Ключа приложения и вызываемого метода. Общий алгоритм подписи выглядит так: 1. Получить хеш метода путем конкатенации Ключа Приложения и вызываемого метода 2. Подписать хеш публичным ключом и получить токен 3. Добавить в запрос на сервер 2 заголовка с Именем Приложения и Токеном 1. Уже сделал получил <RSAKeyValue>....</RSAKeyValue> 2. а вот на втором топчусь на одном месте... 3. для реализации 3 нужен 2 ) выше кидал пример кода на шарпе... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 13:52 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, Имхо вы https изобретаете. Зачем на уровне приложения каждый get сопровождать подписью? Есть https, есть токены (подписанные и шифрованные) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:04 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Внезапно: распространить среди них открытый ключ. В сертификате или явно. Как использовать только открытый ключ без парного ему закрытого? Свой - нельзя. Чужой? А чей? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:10 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, к сожалению это не моя затея, дали задачу сказали подключиться и получить инфо, а ихними разрабами пока не удалось наладит контакт... при этом экспайред тайм у этого ключа примерно одна минута ) т.е. при каждом любом запросе я должен получить открытый ключ с ним подписать запрашиваемый метод потом дальше работать... вот как подписать хз если не помогут более знающие в этой области ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:14 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, Просто если сайт на https, то там как раз при вводе пароля и стоит RSA. 2. Он медленный поэтому его не используют с каждым запросом. Imho ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:16 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, Они обязаны были дать демку. Ты счас без подписи что получаешь от них? Ошибка какая? Или вообще все с нуля? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:18 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, Будет прикольно, если они тебя тестирует и подключится надо просто по SSL))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:19 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, так говорю же по ихнему ТИ по первому пункту честно получаю Код: plaintext
и все сходится с ТИ, дальше уже с помощью этого должен подписать строку хэшированную... кстати пример кода на Шарпе уже кидал ну а дальше хз чем они думали авторОшибка какая? вроде подписал, но в моих полученных байтах имеются и отрицательные числа... далее в последнем запросе если что то не так ответом будет (по инструкции) 400 –Bad Request (ну в общем написан так: Перед тем как вызвать запустить вызываемой метод, Api проведет валидацию подписи с помощью закрытого ключа, и запустит проверку прав доступа Приложения к конкретному методу. В случае ошибки, Приложение получает ошибку 400 –Bad Request) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:25 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:27 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:30 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар Всю цепочку собери по новой. С ошибкой и ответом от них. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:33 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, так результат бед реквест, как ранее говорил меня смущает и отрицательные знаки... счас попробую все сделать в одном транзакции может тогда что нибудь получится ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:39 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар PetroNotC Sharp, так результат бед реквест, как ранее говорил меня смущает и отрицательные знаки... счас попробую все сделать в одном транзакции может тогда что нибудь получится Делай всю цепочку ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 14:42 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар PetroNotC Sharp, к сожалению это не моя затея, дали задачу сказали подключиться и получить инфо, а ихними разрабами пока не удалось наладит контакт... при этом экспайред тайм у этого ключа примерно одна минута ) т.е. при каждом любом запросе я должен получить открытый ключ с ним подписать запрашиваемый метод потом дальше работать... вот как подписать хз если не помогут более знающие в этой области ) Музаффарв том то дело, по ТИ написано надо подписать а тут вроде как шифруется?Да, выглядит странно. Нужно уточнить у них почему у них encrypt() вызывается, еще и без padding'a! Хотя конечно они со своей стороны могут хранить твой приватный ключ и делать decrypt и так проверять что это твой ключ. Но это звучит как очень странная схема, где данные шифруются асимметрично. Так никто не делает. МузаффарВызов каждого метода должен сопровождаться подписью в заголовке запроса. Подписывается только хеш строки состоящей из Ключа приложения и вызываемого метода. Общий алгоритм подписи выглядит так: 1. Получить хеш метода путем конкатенации Ключа Приложения и вызываемого метода 2. Подписать хеш публичным ключом и получить токен 3. Добавить в запрос на сервер 2 заголовка с Именем Приложения и ТокеномТут тоже что-то странное. Что такое получить хеш "путем конкатенации". И почему подписывает хеш публичным ключом. Это тоже не правда. Советую тебе по-лучше разобраться в теории подписей и шифрования, и обсудить все эти вопросы с той командой. Возможно они делают что-то не то. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 15:14 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, >меня смущает и отрицательные знаки Покажешь еще раз. По ссылке что я дал все работает. Шифрует и дешифрует. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 15:42 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, хоть что то Код: plaintext
вот так выглядит Код: plaintext
это все после Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 15:49 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, Шо це таке ТИ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 15:52 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, ТехИнструкция ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 15:55 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, >вот так выглядит =... Я проверяю как по ссылке. "мама мыла раму" - зашифровал - расшифровал и прочитал. А ты на какие то минусы смотришь ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 15:55 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар PetroNotC Sharp, ТехИнструкция ) У нас ТЗ по ГОСТ дают)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 15:55 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Музаффар, >вот так выглядит =... Я проверяю как по ссылке. "мама мыла раму" - зашифровал - расшифровал и прочитал. А ты на какие то минусы смотришь это я тоже проверял все норм, но по ТехИнструкции после выполнения 22352067 должно получится массив байтов и дальше для получения точнее для реализации запроса в хидере должен указать Код: plaintext
и тот же вопрос должен шифровать или же подписать хотя по коду Шарпа 22352067 Код: c# 1.
это метод шифрование https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.rsacryptoserviceprovider.encrypt?view=net-5.0 есть ещё sign https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.rsacryptoserviceprovider.signdata?view=net-5.0 но они говорят подписать но в коде шифруют... или я не правильно читаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 16:06 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, По разному можно говорить значение слова Подписал ЭЦП. Делай цепочку. Делай скрины на F5 Делай цепочку с curl ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 16:26 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Тьфу, F12 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 16:27 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Тьфу, F12 зачем Ф12? я с браузером не работаю ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 16:33 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар PetroNotC Sharp Тьфу, F12 зачем Ф12? я с браузером не работаю ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 16:40 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Как использовать только открытый ключ без парного ему закрытого? Применить к данному документу (в данном случае подписи). Ключ самодостаточен. Закрытый ключ - у подписывающего, для проверки подписи он напрочь не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 13:42 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Применить к данному документу Я понимаю или такое: При подписании: генерируем эфмерную ключевую пару, формируем дайджест, имитовставку и шифруем их на паре "открытый эфемерный ключ - закрытый ключ подписанта"; Уничтожаем открытый эфемерный ключ и формируем ЭП в составе "закрытый эфемерный ключ, открытый ключ отправителя и шифр, содержащий дайджест с имитовставкой"; При проверке ЭП: считаем дайджест документа, расшифровываем полученное на полученной паре "закрытый эфемерный ключ - открытый ключ подписанта" и сверяемся. Или такое: При подписании: формируем дайджест, имитовставку и шифруем их на паре "открытый ключ проверяющего - закрытый ключ подписанта"; Отправляем шифровку проверяющему. Если необходимо - добавляем открытый ключ подписанта; При проверке: проверяющий считает дайджест и расшифровывает полученное на паре "открытый ключ подписанта - закрытый ключ проверяющего" и сверяемся. А какой ещё вариант формирования криптографической ЭП? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 14:29 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
походу я не должен подписать, т.к. подпись идет с помощью приватного ключа начал дебажит рабочий код от сишарпа как выяснил на шарпе подписанная строка получается в 128 байтов, в это время на java 172... проблема может быть в кодировании/декодировании или алгоритме шифрование и т.д.? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 16:33 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, Какая разница скока байт? Они на шарпе принимают запросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 17:23 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, да выше код на шарпе вполне рабочий, походу я не правильно получаю так называемый токен (т.е. шифрованную строку представленную в байтах) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 17:29 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар PetroNotC Sharp, да выше код на шарпе вполне рабочий, походу я не правильно получаю так называемый токен (т.е. шифрованную строку представленную в байтах) -где цепочка? -что значит рабочий? Как узнал? - где curl? - как можно неправильно получить токен? Половинку прочитал что ли? Наверно получил но неверно РАСКОДИРОВАЛ? И ТАК ВО ВСЕМ ТВОЕМ ОТВЕТЕ. НИЧЕГО НЕ ПОНЯТНО ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 17:54 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp НИЧЕГО НЕ ПОНЯТНО лично мне ничего не понятно с самого первого сообщения ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 18:06 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, и так вот рабочий код на шарпе Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
результат получаю что то вроде этого 104,179,63,56,32,192,231,190,182,4,131,204,186,238,21,93,211,176,14,216,218,107,35,79,50,193,164,174,169,226,14,123,216,87,110,31,169,242,206,179,90,246,158,150,192,7,83,221,62,102,154,3,74,125,73,48,93,70,249,37,110,193,4,93,37,237,98,228,56,152,49,177,152,151,136,138,36,24,44,152,56,204,200,185,11,190,165, 134,66,242,5,177,179,12,36,5,193,192,125,53,68,73,191,60,19,181,164,156,94,182,107,208,29,243,11,188,11,11,228,8,237,146,64,220,112,155,173,101 далее по документации в хидере Authorization-Token указываю этот полученный результат, ну честно получаю ответ по моему запросу в JAVA делаю примерно вот это Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
проверяю на том же месте, и получаю ответ вроде Could not decrypt token! мне кажется проблема в кодировках чтоли.. хз пока а на счет цепочки: паблик кей дается на 10 дней по этому нет необходимости указать тут получение этого ключа, к тому же с одним и тем же ключом тестировал в обоих кодах ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 18:08 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev PetroNotC Sharp НИЧЕГО НЕ ПОНЯТНО лично мне ничего не понятно с самого первого сообщения ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 18:09 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, Цепочка - это термин мы тут придумали чтобы ты рассказал архитектуру системы. Еще зовут юз кейсы. По русски ВИ вариант использования. Пример - взял чайник - налил воду Или у тебя - сервер с АPi куда шлю запрос serv1.ru - шлю запрос.... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 19:07 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
На вопросы все в 22352658 не ответил. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 19:08 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, 3. Сделать СВОЙ СЕРВЕР И КЛИЕНТ. Отправил и сам получил дешифровал "мама мыла раму"? ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 19:12 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Про http тоже не ответил. Надо отвечать на все вопросы что есть в топике. Работай! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2021, 19:14 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, автор-где цепочка? -что значит рабочий? Как узнал? - где curl? - как можно неправильно получить токен? Половинку прочитал что ли? Наверно получил но неверно РАСКОДИРОВАЛ? И ТАК ВО ВСЕМ ТВОЕМ ОТВЕТЕ. НИЧЕГО НЕ ПОНЯТНО есть входные параметры предоставленные со стороны стороннего сервиса (appName, appPass, appKey) 1. Аутентификация, т.е. получения публичного ключа. для этого необходимо сделать запрос на метод auth/getPubKey, указав appName и md5(appPass) как итог получаем что то вроде этого: Код: plaintext
далее Подпись метода: Вызов каждого метода должен быть с подписью в заголовке запроса. Подписывается только хэш строки из appKey и вызываемого метода. Общий алгоритм подписи выглядит так: 1. Получить хэш метода путем конкатенации appKey и method 2. Подписать хэш публичным ключом с который был получен при аутентификации и получить токен 3. Добавить в запрос на сервер 2 заголовка с appName и Токеном что было сделано в этой части: 1. Код: java 1.
2. Создаю PublicKey на основе публичного ключа (из аутентификации) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
далее сказано подписать публичным ключом хэшированный метод, но т.к. подпись осуществляется с помощью не публичного а приватного ключа и к тому же по рабочему примеру на C# полагаю что надо не подписать а шифровать публичным ключом Код: java 1. 2. 3.
далее вопрос, если до этого место правильно делаю скорее всего проблема будет в конце т.е. должен ли декодировать/кодировать в бейс64 для получение токена, и почему у меня опять таки отрицательные элементы получаются? как я помню отрицательные элементы изза того что полученный элемент больше чем 127... ну в добавок, почему я говорю что гдето не так?, потому что третий этап (Добавить в запрос на сервер 2 заголовка с appName и Токеном) возвращает сообщение Could not decrypt token! думаю я ответил на Ваши все вопросы, или что то остался? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 08:26 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, ВИ напиши в 5-10 строк ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 08:34 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, нашел проблему!!!!!!!!!!!!! )))))) делал все правильно за исключением специфики языка... дело в том что в C# нет знака в байтах а я уже многократно спрашивал про отрицательных знаков.... и тог решением был b & 0xFF т.е. итог был после шифрования: Код: java 1. 2. 3. 4.
в Общем всем спасибо, помогли даже очень. ) есть ещё один вопрос но это уже сюда не относится для этого создам новую ветку скорее всего, если не получится сделать конечно, опять же большое спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 09:07 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Если не умеешь писать то скажи. Я начну а ты поправляй ВИ: 1. первый запрос к serv1.ru auth/getPubKey и получаем строку (аутентификац) 2. По строке зашифровать RSA МЕТОДОМ мой запрос getСписокДолжников(дата) 3. Отправить GET с двумя заголовками заг1, заг2 и запросом шифром. 4. Получить ответ и..... ... Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 09:07 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар PetroNotC Sharp, нашел проблему!!!!!!!!!!!!! )))))) делал все правильно за исключением специфики языка... дело в том что в C# нет знака в байтах а я уже многократно спрашивал про отрицательных знаков.... и тог решением был b & 0xFF т.е. итог был после шифрования: Код: java 1. 2. 3. 4.
в Общем всем спасибо, помогли даже очень. ) есть ещё один вопрос но это уже сюда не относится для этого создам новую ветку скорее всего, если не получится сделать конечно, опять же большое спасибо! Я тоже не мог понять зачем после шифрования этот цикл? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 09:08 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 09:09 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Молодец что бьешь на топики а не все в одну кучу +100 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 09:11 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Я тоже не мог понять зачем после шифрования этот цикл? а по другому как получить байты без отрицательных знаков? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 09:48 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, Зачем байты то? Это прогеры вашего сервака придумали? Я выше сделал пример RSA по моей ссылке вверку. Все работает. В токен и хидер запроса пишут символы текста а не байты ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 10:12 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар а по другому как получить байты без отрицательных знаков? В Java целочисленные типы знаковые, а поэтому байты со значением от 0x80 до 0xFF будут приведены к целым со значениями от 0xFFFFFF80 до 0xFFFFFFFF. И, кстати, тернарный оператор там лишний - проверка условия, скорее всего, замедлит код сильнее, чем безусловное маскирование, которое компилятор может ещё и соптимизировать до "копирование без знакового расширения". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 11:09 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Basil A. Sidorov А какой ещё вариант формирования криптографической ЭП? Как это делается в RSA PKCS #1: 1. получаем хэш документа; 2. получаем хэш этого хэша; 3. применяем к результату алгоритм RSA с приватным ключом подписанта; 4. Результат форматируем определённым способом и нарекаем подписью. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 13:57 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Хм... хеш от хеша. Что-то в этом есть подозрительное. Будь здесь парочка евреев типа Циммермана или Шнайера (блин это не расизм а констатация) то они-бы наверняка нашли бы уязвимость или на худой конец процитировали что-то умное из Талмуда. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 15:23 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
mayton, Хммм.. Если посмотреть ссылку выше, то там пример без всяких заумных хешей. Просто два метода decode() и encode() ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2021, 15:39 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Просто два метода decode() и encode() Осталась сущая мелочь: найти между ними различие для RSA... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2021, 13:49 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov PetroNotC Sharp Просто два метода decode() и encode() Осталась сущая мелочь: найти между ними различие для RSA... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2021, 14:52 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
PetroNotC Sharp не понял тебя. Алгоритм RSA это y = x d % m. причём как на шифрование, так и на расшифровывание. Разница только в используемом ключе. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2021, 14:25 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Да. Там две функции почти одинаковы ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2021, 14:54 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
ребят один момент учитывая что у сервера прайвет кий, и у клиента паблик то как определить кто шифровал? т.е. я передаю паблик и Ивану и Артёму, как определить кто из них шифровал сообщение? или что то не правильно думаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 13:03 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Если "кто шифровал", то я выступаю в роли расшифровывающего. А значит Иван и Артём передают мне свои публичные ключи. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 13:07 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Музаффар, По логину паролю? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 13:08 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Если "кто шифровал", то я выступаю в роли расшифровывающего. А значит Иван и Артём передают мне свои публичные ключи. Обычно публичный ключ является частью сертификата. А в сертификате прописаны все реквизиты чтоб понять с кем имеешь дело. Но чтоб в сертификатах не было дублей и бардака - существуют центры сертификации которые заверяют своей подписью что сертификат верен. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 13:10 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
mayton Обычно публичный ключ является частью сертификата. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 13:11 |
|
RSA шифрование с помощью открытого ключа
|
|||
---|---|---|---|
#18+
mayton, Если сертификат, тогда имхо шифруется КАНАЛ ТРАНСПОРТА. Как SSL/HTPPS. Тогда непонятно что там у увтора. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 13:12 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120381]: |
0ms |
get settings: |
17ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
36ms |
get topic data: |
4ms |
get forum data: |
1ms |
get page messages: |
1277ms |
get tp. blocked users: |
1ms |
others: | 357ms |
total: | 1700ms |
0 / 0 |