Кодированная строка appengine base64 отличается от моей локальной машины - PullRequest
1 голос
/ 09 июля 2011

Это код:

>>> import base64
>>> id = 1
>>> key = "secret key very long"
>>> enc = base64.urlsafe_b64encode(str(id)+key)
>>> enc
'MXNlY3JldCBrZXkgdmVyeSBsb25n'
>>> base64.urlsafe_b64decode(enc)
'1secret key very long'

Работает так, как задумано на моем компьютере, но когда я загружаю этот код в google appengine, как кодированные, так и декодированные строки полностью различаются. Как получилось?

РЕДАКТИРОВАТЬ 1: это фактический код:

import base64
id = 18005
key = "r-$b*8hglm+858&9t043hlm6-&6-3d3vfc4((7yd0dbrakhvi"
enc = base64.urlsafe_b64encode(str(id)+key)
print enc
# local machine: MTgwMDVyLSRiKjhoZ2xtKzg1OCY5dDA0M2hsbTYtJjYtM2QzdmZjNCgoN3lkMGRicmFraHZp
# appengine: PXItJGIqOGhnbG0rODU4Jjl0MDQzaGxtNi0mNi0zZDN2ZmM0KCg3eWQwZGJyYWtodmkxODAwNQ==

1 Ответ

1 голос
/ 09 июля 2011

Я не могу объяснить , почему как таковое, но декодирование строки, полученной из appengine, показывает, что перед вашим ключом стоит '='; и добавленный , а не предварительно добавленный, идентификатор.

>>> key='r-$b*8hglm+858&9t043hlm6-&6-3d3vfc4((7yd0dbrakhvi'
>>> base64.urlsafe_b64decode('PXItJGIqOGhnbG0rODU4Jjl0MDQzaGxtNi0mNi0zZDN2ZmM0KCg3eWQwZGJyYWtodmkxODAwNQ==')
'=r-$b*8hglm+858&9t043hlm6-&6-3d3vfc4((7yd0dbrakhvi18005'
>>> '=' + key + str(18005) == _
True

Вы абсолютно уверены, что использовали один и тот же код на сервере?

...