Почему ключ Api Google Map содержит 39 символов?

#algorithm #google-maps #combinatorics

Вопрос:

Ключи всегда начинаются с «АЙзаСы» (может быть, я ошибаюсь, но мое это). А далее идут 33 символа. Как я вижу, они используют алфавит, цифры и некоторые специальные символы. Это примерно 64 варианта на одно место. И около 64^33 комбинаций (ключей) ~ 401734511064747568885490523085290650630550748445698208825344 ключей.

Так почему же они выбирают именно 39 (6 33) символов?

Почему бы не выбрать 20 символов или 63 символа?

Ответ №1:

У меня нет конкретных знаний о том, как генерируются ключи API Google Maps, но если вам интересно, как такое количество символов может иметь смысл с математической точки зрения, подумайте об этом:

Основываясь на наблюдениях, ключ начинается с 6-символьной строки AIzaSY. Если вы присмотритесь повнимательнее, вы также можете обнаружить, что 7-й символ не является полностью случайным. На самом деле, кажется, что это часто символ верхнего регистра с начала алфавита (A, B, C, D…). Таким образом, это указывает на то, что этот символ также имеет какой-то особый статус, возможно, кодирующий некоторую дополнительную информацию. Для нашей цели это не важно, но дело в том, что, поскольку этот символ явно не случайный, он не может быть частью криптографически сгенерированного ключа.

Итак, после этого префикса из 7 символов у нас осталось 39 — 7 = 32 символа. Как вы заметили, эти символы, похоже, закодированы в Base64. Теперь, в Base64, каждый символ занимает 6 бит, поэтому у нас 32 * 6 = 192 бита (или 24 байта), что является одним из распространенных стандартов длины ключей в криптографии и обеспечивает лучшую безопасность, чем, например, 128-битные ключи (другой стандарт).

Комментарии:

1. Почему ключ API должен содержать криптографический ключ?

2. @Olivier О, это не обязательно должен быть ключ шифрования , но это ключ, и он, скорее всего, сгенерирован криптографически безопасным способом. И по той же причине ключ шифрования может иметь длину 192 бита, что и ключ API.