Я обнаружил, что все эти команды и сам процесс немного запутаны (у меня также есть проекты с 4 средами с 4 различными пакетами), так что я сделал, чтобы включить хэш в полезную нагрузку от клиента, когда клиент запрашивает OTP, затем сервер сохраняет его (доверие при первом использовании) для ручного просмотра в системе управления контентом. Не нашел ни одного аспекта безопасности, используя этот метод
нерировал хэш 11 символов, используяAppSignatureHelper
класс. Но после загрузки apk в play store они больше не работают. И я обнаружил, что Play заменяет ключ на другой, поэтому хэш также меняется. Теперь у меня проблемы с получением ключа хеша 11 символов.
Я не знаю, как использовать команды, данные Google. Я нашел эту команду изВот
keytool -exportcert -alias MyAndroidKey -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
Поскольку для моего приложения включена подпись Play App, мне придется использовать эту команду,
keytool -exportcert -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
Я заменилkeytool
с его путем из папки bin JDK, но потом он говорилxxd
не был распознан, поэтому я скачал его с веб-сайта теперь он говоритtr
не признается, я думаю, это скажет, что дляcut
также.
Прошу прощения, если мне кажется, что это слишком глупо, но как я могу решить эту проблему?
ОБНОВИТЬ: Я попробовал вторую команду сверху на машине с Linux, команда сработала и дала мне 11-значный хэш, но SMS-ретривер все еще не работает.
РЕШЕНИЕ: С помощью ответа Ника Фортескью я скачал файл в формате DER. Затем преобразовал его в файл .jks с помощью следующей команды:
keytool -importcert -alias myalias -file deployment_cert.der -keystore certificate.jks -storepass mypassword
Затем выполнил первую команду сверху на certificate.jks и все заработало!