web-dev-qa-db-fra.com

Comment générer une clé de hachage à 11 caractères pour Sms Retriever avec la signature de Google App

J'avais généré le hash de 11 caractères en utilisant la classe AppSignatureHelper. Mais après avoir téléchargé l'apk sur Play Store, le hachage ne fonctionne plus. Et j’ai découvert que Play remplace la clé par une autre, c’est pourquoi le hachage est également modifié. Maintenant, j'ai du mal à obtenir la clé de hachage de 11 caractères.

Je ne sais pas comment utiliser les commandes données par Google. J'ai trouvé cette commande de ici

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

Depuis, la signature de Play App est activée pour mon application, je dois utiliser cette commande, 

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

J'ai remplacé keytool par son chemin provenant du dossier bin du JDK, mais il indiquait alors que xxd n'était pas reconnu. Je l'ai donc téléchargé depuis un site Web. Il est donc en train de dire que tr n'est pas reconnu, je suppose que ça va dire que pour cut ainsi. 

S'il vous plaît, pardonnez-moi s'il semble trop tard de ma part, mais comment puis-je résoudre ce problème?

UPDATE: J'ai essayé la deuxième commande d'en haut sur une machine Linux, la commande a fonctionné et m'a donné un hachage de 11 caractères mais le SMS Retriever ne fonctionne toujours pas. 

SOLUTION: À l'aide de la réponse de Nick Fortescue, j'ai téléchargé le fichier au format DER. Puis converti en un fichier .jks à l’aide de la commande suivante,

keytool -importcert -alias myalias -file deployment_cert.der -keystore certificate.jks -storepass mypassword

Puis exécuté la première commande d'en haut sur certificate.jks et cela a fonctionné!

17
Farhan Farooqui

Dans les documents d’aide pour la signature d’application Google Play , il comporte une section "Nouvelles applications". L'étape 4 de cette section est la suivante: 

Étape 4: enregistrez votre clé de signature d'application auprès des fournisseurs d'API Si votre application utilise une API, vous devrez généralement enregistrer le certificat de la clé utilisée par Google pour authentifier votre application. Cela se fait généralement via l'empreinte du certificat.

Pour rechercher le certificat de la clé utilisée par Google pour signer à nouveau votre fichier APK pour livraison:

  1. Connectez-vous à votre console de jeu .
    1. Sélectionnez une application.
    2. Dans le menu de gauche, cliquez sur Gestion des versions> Signature de l'application.
    3. À partir de cette page, vous pouvez copier les empreintes digitales les plus courantes (MD5, SHA-1 et SHA-256) de votre certificat de signature d'application. Si le fournisseur d'API requiert un type d'empreinte digitale différent, vous pouvez également télécharger le certificat d'origine au format DER et l'exécuter via les outils de transformation requis par le fournisseur d'API.

Téléchargez le certificat d'origine au format DER, puis utilisez votre commande sur ce certificat.

7
Nick Fortescue

J'ai trouvé toutes ces commandes et le processus lui-même un peu compliqué (j'ai aussi des projets avec 4 environnements avec 4 packages différents), alors ce que j'ai fait est d'inclure le hachage sur la charge du client lorsque le client demande un OTP, puis le serveur l'enregistre (confiance lors de la première utilisation) pour une vérification manuelle sur le système de gestion de contenu . Je n'ai trouvé aucun aspect de sécurité à l'aide de cette méthode.

0
Noam a

Comme les commandes bash par défaut ne fonctionnaient pas pour moi et que je devais générer des hachages pour le magasin de clés local et le certificat Google Play, j'ai écrit mon propre script Ruby pour cela: https://github.com/michalbrz/sms-retriever-hash -generator/blob/master/google_play_sign.rb

Générer ensuite du hachage avec la signature Google Play consiste simplement à:

Ruby google_play_sign.rb --package com.your.app --google-play-key deployment_key.der

deployment_key.der est le certificat téléchargé à partir de Google Play comme dans Réponse de Nick .

Sous le capot, il transforme le cert de Google Play en magasin de clés et fait essentiellement ce que font les autres commandes suggérées par bash, tout en le rendant plus facile à utiliser.

0
michalbrz

essaye ça 

C:\Program Files\Java\jdk1.8.0_25\bin> keytool -exportcert -alias *Alias -keystore *keystorePath | C:\OpenSSL\bin\openssl.exe sha1 -binary | C:\OpenSSL\bin\openssl.exe base64

remplacez * Alias ​​par votre alias et * keystorePath par votre emplacement kestore. Indiquez également le chemin correct de openssl.exe s'il est installé dans un autre répertoire

0
MJahongir