¿Cómo está comprobando Google SHA1 y el nombre del paquete en las llamadas de la API?

Al registrar una aplicación de Android en la consola de la API para acceder a la API de Google, debes introducir la huella dactilar de los certificados SHA1 de tus aplicaciones y el nombre del paquete de la aplicación.

Ahora me preguntaba cómo Google podría verificar que estos valores son correctos cuando las llamadas api son simples peticiones HTTP (en el caso más simple, cuando no se utiliza su cliente API, que podría añadir algunos valores de encabezado)? Debe proporcionar su clave de API al realizar una llamada de API, pero esto no demuestra que los valores introducidos son correctos.

One Solution collect form web for “¿Cómo está comprobando Google SHA1 y el nombre del paquete en las llamadas de la API?”

Usted puede obtener el nombre del paquete, así como la huella digital sha 1 de la aplicación instalada con bastante facilidad.

private void printSha1() { List<ApplicationInfo> mAppList = getPackageManager().getInstalledApplications(0); for (ApplicationInfo info :mAppList) { Log.d(TAG, "Package Name: " + info.packageName); Log.d(TAG, "Sha1: " + getCertificateSHA1Fingerprint(info.packageName)); } } private String getCertificateSHA1Fingerprint(String packageName) { PackageManager pm = getPackageManager(); int flags = PackageManager.GET_SIGNATURES; PackageInfo packageInfo = null; try { packageInfo = pm.getPackageInfo(packageName, flags); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } Signature[] signatures = packageInfo.signatures; byte[] cert = signatures[0].toByteArray(); InputStream input = new ByteArrayInputStream(cert); CertificateFactory cf = null; try { cf = CertificateFactory.getInstance("X509"); } catch (CertificateException e) { e.printStackTrace(); } X509Certificate c = null; try { c = (X509Certificate) cf.generateCertificate(input); } catch (CertificateException e) { e.printStackTrace(); } String hexString = null; try { MessageDigest md = MessageDigest.getInstance("SHA1"); byte[] publicKey = md.digest(c.getEncoded()); hexString = byte2HexFormatted(publicKey); } catch (NoSuchAlgorithmException e1) { e1.printStackTrace(); } catch (CertificateEncodingException e) { e.printStackTrace(); } return hexString; } public static String byte2HexFormatted(byte[] arr) { StringBuilder str = new StringBuilder(arr.length * 2); for (int i = 0; i < arr.length; i++) { String h = Integer.toHexString(arr[i]); int l = h.length(); if (l == 1) h = "0" + h; if (l > 2) h = h.substring(l - 2, l); str.append(h.toUpperCase()); if (i < (arr.length - 1)) str.append(':'); } return str.toString(); } 

Si ejecuta este código imprimirá el nombre del paquete y su impresión sha 1. Éstas son las dos cosas que usted proporciona mientras que crea la llave de la API, así que Google traza estas dos cosas contra la llave que genera.

Como puede ver su posible acceso al nombre del paquete y su impresión SHA 1, la otra cosa restante es la clave API que proporciona a la biblioteca u otra aplicación necesaria (Google Play Service) a través de su código oa través de xml (Manifest, xml config archivo).

Así que cada vez que Google le sirve algo, puede comprobar el mapeo relevante que generó cuando generó la clave desde la consola del API.

El código para el nombre del paquete se toma desde aquí

  • SetStorageEncryption no produce ningún efecto
  • Cómo agregar PBKDF2WithHmacSHA1 para android api 8 (Froyo)
  • Uid ... no tiene android.permission.UPDATE_APP_OPS_STATS
  • Cómo cifrar y descifrar archivos en Android?
  • ¿Puede mi aplicación Android imitar el intento del sistema?
  • Cómo guardar la clave secreta de forma segura en android
  • ¿Cómo puedo asegurar que el archivo se transmita desde el teléfono al servidor sin ser manipulado?
  • Falla de confiabilidad de la aplicación en la aplicación v3
  • ¿Cómo almacenar de forma segura las credenciales (contraseña) en la aplicación de Android?
  • ¿Cómo asegurar la cadena en la aplicación Android?
  • Permitir que sólo mis aplicaciones Android ejecuten api de punto final en java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.