
BG Development · За реклама · За контакти |
![]() ![]() ![]() ![]() ![]() |
Здравей! ( Включване | Регистриране ) |
![]() ![]() ![]() |
dedal |
Публикувано на: 28-12-2022, 14:52
|
||||
Име: Григор Колев Група: Потребител Ранг: Активен Мнения: 200 Регистриран на: 17.11.10 ![]() |
Пренаписвам код от python2 на python3 Стана по лесно отколкото очаквах. Тук там поправка в wxpython, малко играчка с импортите в пакетите които трябва да станат от import module на from . import module Лека заигравка с raise MyClassException, msg и то си тръгна. Oгромна час от промените станаха с find and replace на PyCharm. Обаче смяната на pycrypto с pycryptodome ме изтормози в часта RSA.verify Как работи: има msg в json. msg се подписва с RSA после се криптира с друг алгоритъм и се праща през сокет към сървъра. Сървъра декриптира и ако е успешно проверява подписа, ако и подписа е ОК отваря json. И двата кода трябва да могат да си говорят за да не премахвам старата версия, има прекалено много устройства и ще я извадя от употреба когато ги бракувам. Обаче бъркам някъде в типовете данни при верификация на подписа, нямам идея къде. когато подам към стария код чете и валидира подписа успешно
Когато получавам се троши при verify
От стария код подавам hex 100% Какво аджаба не и е наред на функцията verify в pycryptodome Това мнение е било редактирано от dedal на 28-12-2022, 14:53 |
||||
ici |
Публикувано на: 28-12-2022, 15:27
|
![]() ![]() Име: Ивайло Илчев Група: VIP Ранг: Почетен член Мнения: 18218 Регистриран на: 06.06.04 ![]() |
Грам идея нямам от пъцрипто, ама опитай с низовете да използваш encode/decode. Те вече са утф както надявам се знаеш.
Това мнение е било редактирано от ici на 28-12-2022, 15:27 -------------------- Ние не сме в една лодка, ние сме в една буря. Лодките са различни.
Следващият път когато се почувстваш ненужен, грозен и недооценен, помни че освен това си и тъп. |
dedal |
Публикувано на: 28-12-2022, 16:05
|
||
Име: Григор Колев Група: Потребител Ранг: Активен Мнения: 200 Регистриран на: 17.11.10 ![]() |
Опитах encode е ОК обаче decode са го махнали гадовете от python3 Тука не е проблема в encode/decode а в какъв формат идва през сокета нещо което се подава в hex и как да го обърна в тип който да е същия като digest за да мине през verify. Щом bytes.hex(self.signer.sign(digest)) == signature то значи при verify или digest или signature е в грешен тип. Вероятно digest е различен, обаче как да сменя типа без да строша подписа Това мнение е било редактирано от dedal на 28-12-2022, 16:11 |
||
dedal |
Публикувано на: 28-12-2022, 16:37
|
Име: Григор Колев Група: Потребител Ранг: Активен Мнения: 200 Регистриран на: 17.11.10 ![]() |
Да погледнах.
digest е Cryptodome.Hash.SHA256.SHA256Hash докато signature е hex Как да обърна сигнатурата за да сработи правилно или да обърна digest за да работи verify Не че с == не работи, но игнорира time expire и никак не искам да я пренаписвам Това мнение е било редактирано от dedal на 28-12-2022, 16:39 |
wqw |
Публикувано на: 01-01-2023, 21:32
|
||
![]() ![]() Име: Владимир Висулчев Група: VIP Ранг: Почетен член Мнения: 6345 Регистриран на: 10.06.04 ![]() |
За verify ти трябва public key. С public key не можеш да sign-ваш така че мещо не е наред щом в случая sign не ти гърми. -------------------- |
||
dedal |
Публикувано на: 04-01-2023, 13:47
|
||||
Име: Григор Колев Група: Потребител Ранг: Активен Мнения: 200 Регистриран на: 17.11.10 ![]() |
Не е ОК типът на подписа. От едната страна е signature == unicode # True от другата signature == unicode #False На python3 signature == Cryptodome.Hash.SHA256.SHA256Hash и нямам грам идея как да обърна unicode което си е прост hex в Cryptodome.Hash.SHA256.SHA256Hash И нямам public и private. Имам два еднакви private. Първо комуникацията е двупосочна между два софтуера които са лично мои и аз само имам достъп до компютрите и то по мой протокол. Това с public и private е за web а това не е web а просто два компа си говорят, идеята на подписа е да не се промени съобщението по пътя |
||||
wqw |
Публикувано на: 04-01-2023, 14:04
|
||||||
![]() ![]() Име: Владимир Висулчев Група: VIP Ранг: Почетен член Мнения: 6345 Регистриран на: 10.06.04 ![]() |
Подписите не се ползват за това. Ако идеята е "да не се промени съобщението по пътя" тогава ти трябва MAC (Message authentication code) като HMAC и пр. MAC е като hash, който обаче сe ползва с предварително избран key. Примерно SHA256 ти е unkeyed hash, но ако го ползваш в конструкция като HMAC-SHA256 вече можеш да подадеш key и това може да се ползва за MAC на съобщението. Идиеята на signature е authenticity т.е. да си сигурен кой ти го праща съобщението и принципно това е по-силно от MAC и съответно "по-скъпо" за реализиране (по-бавно). Anyway. . . Имай предвид че self.signer.verify(digest, signature) винаги връща False, а ако има проблем с подписа raise-ва грешка:
Примера в документацията е така:
cheers, </wqw> -------------------- |
||||||
dedal |
Публикувано на: 07-01-2023, 12:53
|
||||||||||
Име: Григор Колев Група: Потребител Ранг: Активен Мнения: 200 Регистриран на: 17.11.10 ![]() |
Намерих проблема:
|
||||||||||
dedal |
Публикувано на: 07-01-2023, 12:56
|
||
Име: Григор Колев Група: Потребител Ранг: Активен Мнения: 200 Регистриран на: 17.11.10 ![]() |
Решено
|
||
![]() |
![]() ![]() ![]() |