Как правильно рассчитать apkCertificateDigestSha256, имеющий доступ к сертификату? - PullRequest
0 голосов
/ 13 марта 2020
В документации

Safet yNet (https://developer.android.com/training/safetynet/attestation) указано, что поле, возвращаемое в токене аттестации apkCertificateDigestSha256, равно Base-64 encoded representation(s) of the SHA-256 hash of the calling app's signing certificate(s).

Возможно, я неправильно понимаю, что это означает, поскольку мои данные не совпадает Если я проверю отпечатки своих сертификатов, у меня появится поле SHA256, длина которого составляет 32 байта. Когда я пытаюсь закодировать его в base64, я получаю еще более длинную строку. Это примерный результат, полученный с помощью строки hello world sha256, хэшированной и затем закодированной в base64: Yjk0ZDI3Yjk5MzRkM2UwOGE1MmU1MmQ3ZGE3ZGFiZmFjNDg0ZWZlMzdhNTM4MGVlOTA4OGY3YWNlMmVmY2RlOQ==

Между тем токен аттестации Google возвращает намного более короткие хэши, которые, декодированные из base64, показывают, казалось бы, случайные значения. Например, это: EmGH9u67SiSyLuvZCoAN+R+NU/yHP29gSmoUgvNtehk= Что не имеет смысла после декодирования.

Как получить те же результаты, что и Google, основываясь на моем сертификате? Почему их sha256 га sh не 32 байта?

1 Ответ

0 голосов
/ 17 марта 2020

По предложению Майкла в комментариях проблема заключалась в том, что я использовал текстовое представление отпечатка пальца вместо двоичных данных. Изменяя эту деталь, мне удалось получить те же результаты, что и в Google.

...