Java String to Python String Кодирование "ошибка" - PullRequest
2 голосов
/ 01 февраля 2012

Не уверен, что это лучший из названий, но ...

В моем приложении для Android я пытаюсь проверить подписанную строку.

Мой метод для этого работает, если яскопируйте и вставьте подписанную строку и подпись непосредственно в мой метод Django / Python (я получаю эти строки из моего logcat).

Но когда я пытаюсь на самом деле отправить эти данные на сервер, всегда появляется сообщение о нихне проверено.

Я пробовал .encode ('ascii') и .encode ('utf_8') [просто слепо пробовал эти вещи], и ничего не помогло.

Есть предложения?

1 Ответ

2 голосов
/ 01 февраля 2012

Вы должны сделать кодирование и декодирование явными на обоих концах просто для уверенности. Итак, в вашем Android-приложении сначала закодируйте строку в байты UTF-8, используя getBytes("UTF-8"). Вычислить сигнатуру этого байтового массива. Затем я закодировал бы получившиеся байтовые массивы (сообщение и подпись) в Base64 , чтобы получить хороший кусок ASCII без пробелов, который выдержал бы любое кодирование на проводе.

На стороне Python сделайте обратное. Base64-декодирование сообщение и подпись. Вычислить подпись для строки сообщения и сравнить с полученной подписью. (Помните, что в Python до 3.x «строка» на самом деле является байтовым массивом, а «юникод» - это то, что в Java считается строкой.) Затем декодируйте байтовый массив сообщения, используя message.decode('utf-8'), чтобы получить то, с чего вы начали на стороне Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...