Может ли скрипт на python расшифровать HASH, созданный в программе на C ++? - PullRequest
0 голосов
/ 17 августа 2011

У меня есть соревнование, в которое люди могут войти с секретным кодом, который они обнаруживают в приложении для Android.Метод, который я выбрал, чтобы убедиться, что только люди, купившие приложение, могут участвовать в конкурсе, заключается в использовании общего секрета, закодированного (зашифрованного?) С HMAC SHA256.

Таким образом, мой секрет будет зашифрован в C вприложение для Android (используя Crypto ++, есть ли у вас какие-либо предложения по использованию библиотеки SHA? Я считаю, что Crypto ++ действительно сложно использовать).

Это всего лишь пример:

Unencrypted shared secret = "my shared secret"  
Unencrypted secret code   = "abcdef"  
Encrypted shared secret   = "dsgdfgdfgdfgfdgf"   
Encrypted shared secret   = "ddffgdgdf"

Итаккогда пользователь обнаруживает секретный код, он будет перенаправлен на веб-страницу (скрипт Python), а зашифрованный общий секретный ключ HMAC будет передан в качестве параметра CGI:

http://mysite/competition.py?encodedSecret=3dfdfdg343jkfjk390kl

Тогда мой питонСкрипт будет смотреть на параметр CGI и расшифровывать его, чтобы получить общий секрет (чтобы убедиться, что заявка на участие в конкурсе принадлежит пользователю, у которого есть приложение) и секретный код (чтобы узнать, выиграл ли пользователь что-либо).

Мой вопрос: Возможно ли для сценария Python (использующего модуль hashlib) расшифровать что-то, что было зашифровано в C с помощью Crypto ++?

1 Ответ

0 голосов
/ 17 августа 2011

При использовании хэша таким способом обычно вы передаете секретный код (в виде открытого текста) и хеш-код как секретного кода, так и общего секрета на ваш веб-сайт.Затем веб-сайт может выполнить тот же хеш (так как он знает общий секрет) и убедиться, что результат тот же.

«Взлом» хеша на вашем сервере - это много дополнительной работы, и яне вижу, как это добавляет какую-либо защиту.

Если вы не должны передавать код в виде открытого текста, было бы намного эффективнее использовать ваш общий секрет в качестве ключа в алгоритме симметричного шифрования (например, AES ).

...