![]() |
Модераторы: javastic |
![]() ![]() ![]() |
|
Nataly88 |
|
|||
нужно что-то менять Профиль Группа: Участник Сообщений: 10 Регистрация: 25.12.2007 Репутация: нет Всего: нет |
Здравствуйте, подскажите пожалуйста, есть ли такая возможность получить от пакета .apk подписанный сертификат, если да, то как это реализовать? архив находится на sd-csrd.
|
|||
|
||||
ivanovpv |
|
|||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 9 Всего: 28 |
Да, конечно переименуйте {myapp}.apk в {myapp}.zip и извлеките Meta-inf/cert.rsa - и сравните его сигнатуру со своим сертификатом.
-------------------- Aut viam inveniam aut faciam |
|||
|
||||
Nataly88 |
|
|||
нужно что-то менять Профиль Группа: Участник Сообщений: 10 Регистрация: 25.12.2007 Репутация: нет Всего: нет |
а что вы имеете в виду под "своим" сертификатом?(к сожалению не до конца понимаю эту систему) вообще моя задача заключается в сравнении сертификатов 2-ух .apk архивов, необходим ли этот этап - сверять со "своим" сертификатом?
|
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Полагаю что вам тогда надо извлечь сертификаты из обоих apk и сравнить их подписи между собой
или вы хотите один сертификат перенести на другое приложение? |
|||
|
||||
Nataly88 |
|
|||
нужно что-то менять Профиль Группа: Участник Сообщений: 10 Регистрация: 25.12.2007 Репутация: нет Всего: нет |
нет не хочу,мне именно и нужно взять эти 2 сертификата, 2-ух разных .apk, но суть в том, что я не знаю как это сделать, я нашла такой вариант, как получить подпись, но не уверена, что этого достаточно:
PackageManager pm = getPackageManager(); try { PackageInfo info = pm.getPackageInfo("com.example.app", PackageManager.GET_SIGNATURES); Signature[] sig = info.signatures; String sigstring = new String(sig[0].toChars()); //Do something with signature. //System.out.println(sigstring); } catch (NameNotFoundException e) { e.printStackTrace(); } |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Так что вам надо сделать с этими сертификатами? Взять и?
|
|||
|
||||
Nataly88 |
|
|||
нужно что-то менять Профиль Группа: Участник Сообщений: 10 Регистрация: 25.12.2007 Репутация: нет Всего: нет |
и сравнить, если равно, то True иначе false
|
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Ну, судя по всему ваш код возвращает строку с подписью.
таким же образом можно получить подпись и для второго приложения и просто сравнить эти строки |
|||
|
||||
ivanovpv |
|
|||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 9 Всего: 28 |
Ну значит я вас неправильно понял... Дело в том, что APK подписываются сертификатом девелопера (самодельным) - процедура описана здесь. Если же речь идет о сравнении сертификатов в двух разных APK, то программно как это сделать я не знаю - ваш код очень похож на то что нужно. Как и сказал Snegok - нужно просто сравнить строки. Рученьками сравнение простое: 1) Извлекаем 2 файлика CERT.RSA 2) Напускаем на него
он и выдаст вам сигнатуры сертификата, которые надо сличить друг с другом -------------------- Aut viam inveniam aut faciam |
|||
|
||||
Nataly88 |
|
|||
нужно что-то менять Профиль Группа: Участник Сообщений: 10 Регистрация: 25.12.2007 Репутация: нет Всего: нет |
спасибо всем, буду пробовать реализовывать.
|
|||
|
||||
Nataly88 |
|
|||
нужно что-то менять Профиль Группа: Участник Сообщений: 10 Регистрация: 25.12.2007 Репутация: нет Всего: нет |
мне удалось получить подпись таким образом из пакета, но из архива не удалось,не понимаю в чем проблема, путь указан верно(к архиву производится обращение):
PackageInfo info = pm.getPackageArchiveInfo(Environment.getExternalStorageDirectory()+"/MyFolder/"+"app.apk", PackageManager.GET_SIGNATURES); но в info всегда null, а если брать подпись из аналогичного уже установленного приложения - все работает,может, я что-то делаю не так? |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
app.apk - это не что иное как зип-архив.
А установленное приложение уже куда-то там прописываеся в телефон. Т.е. вы если вы должны програмно открыть архив и достать оттуда сертификат, посчитать его CRC (или как там, я не сильно в курсе) и сравнить. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Android | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |