2010-05-08 2 views
2

Я использую crypto ++ для отправки зашифрованных HTTP-запросов AES в механизм приложения, планируя их расшифровать. Мой план состоит в том, чтобы зашифровать часть после «?» так что это примерно так:crypto ++/pycrypto с движком google app

http://myurl.com/Command?eiwjfsdlfjldkjfs при зашифрованном виде. Тем не менее, я застрял, выясняя, как расшифровать его на другом конце, и все же пользователь получает() ответ, чтобы получить аргументы. Может ли кто-нибудь посоветовать, принимаю ли я неправильный подход? Должен ли я расшифровывать, а не использовать get(), но мой собственный парсер?

ответ

3

Я думаю, вы должны создать URL-адрес, как это:

http://myurl.com/Command?q=eiwjfsdlfjldkjfs 

Затем в обработчике запроса, вы сможете получить зашифрованное сообщение, как это:

encrypted_string = self.request.get('q') 

EDIT :

Как это сделать:

1) для создания URL:

import Crypto 
from Crypto.Cipher import ARC4 
obj=ARC4.new('stackoverflow') 
plain = urllib.urlencode({'param1': 'v1', 'param2': 'v2'}) 
ciph = obj.encrypt(plain) 
url = 'myurl.com/Command?%s' % urllib.urlencode({'q': ciph}) 
#url should be 'myurl.com/Command?q=%D4%2B%E5%FA%04rE.%1C.%81%0C%B6t%DCl%F8%84%EB' 

2), чтобы расшифровать его:

ciph = self.request.get('q') 
obj=ARC4.new('stackoverflow') 
plain = obj.decrypt(ciph) 
get_data = cgi.parse_qs(plain) # {'param2': ['v2'], 'param1': ['v1']} 
+0

так, если у меня есть несколько параметров, то я должен отдельно шифрования и дешифрования каждого параметра? Я подумал об этом, но до сих пор не был уверен, что это стандартный способ делать вещи (если есть стандартный способ). Разве это не просто вызовет имена параметров? – Joey

+0

Я отредактировал свой ответ, чтобы объяснить, как зашифровать все параметры сразу. Надеюсь, это поможет – jbochi

+0

Спасибо, ваше редактирование очень полезно. Тем не менее, что-то не работает на моем расшифровке. Я столкнулся с этой ошибкой: кодек ascii не может кодировать символы в позиции 0-7 После прочтения, я собрал, мне нужно было вызвать encode() на ciph перед расшифровкой, что избавилось от этой ошибки. Я использовал «utf-8», потому что кодировка, когда getCString из моего URL-адреса NSString является «NSUTF8StringEncoding». Когда я пробую это на примерной строке, я получаю полный беспорядок для результата в обычном var. Любая идея почему? – Joey

Смежные вопросы