Подпись файла APK предназначена для обеспечения подлинности источника APK и того, что файл APK не был изменен;
Подпись APK основана на алгоритме хеширования Hash;
Характеристики алгоритма хеширования:
Часто используемый алгоритм хеширования с тремя столбцами:
, длина
Кусочек ;
Кусочек ;
Процесс подписания:
При подписании после ввода пароля хранилища ключей файла подписи вы также должны ввести псевдоним и пароль псевдонима. В одном хранилище ключей может храниться несколько ключей;
Подпись эквивалентна отпечатку пальца. Любое изменение APK, даже добавление пробела в любой файл ресурсов, приведет к уничтожению подписи и невозможности прохождения проверки;
При подписании используйте закрытый ключ для шифрования APK; при установке пакета APK система будет использовать открытый ключ для расшифровки;
Сгенерируйте ключ подписи:
В Android Studio выберите параметр «Панель меню/Сборка/Создать подписанный пакет/APK…»,
Выберите параметры APK,
Выберите Создать новый файл подписи,
В «Пути к хранилищу ключей» выберите путь создания файла подписи,
Во всплывающем диалоговом окне щелкните зеленый значок Android, чтобы создать его в корневом каталоге проекта.
Введите пароль и пароль псевдонима , настроены на 123456
, Нажмите " OK " Файл подписи может быть создан ;
Файл подписи создается в корневом каталоге проекта;
использовать
keytool -list -v -keystore keystore.jks
Command вы можете просмотреть подробную информацию о ключе подписи;
В расширении ниже есть
ключи #1: ObjectId: 2.5.29.14 Criticality=false
;
индивидуальный jks в файле , Можно больше ключей , в этом расширении ,Можетиметьмногоключи ;
Среди вышеперечисленных подписей некоторые отвечают за подписи программ Java, а некоторые — за подписи Android APK;
Y:\002_WorkSpace\001_AS\AppStart>keytool -list -v -keystore keystore.jks
Введите пароль хранилища ключей:
Тип хранилища ключей: PKCS12
Поставщик хранилища ключей: SUN
Ваше хранилище ключей содержит 1 индивидуальный条目
Псевдоним: key0
Дата создания: 2021-9-14
Тип записи: PrivateKeyEntry
Длина цепочки сертификата: 1
Сертификат[1]:
所иметь ВОЗ: CN=Han Shuliang
Автор: CN=Han Shuliang
Серийный номер: 3f8f6290
иметь срок действия Tue Sep 14 22:31:41 GMT+08:00 2021 к Sat Sep 08 22:31:41 GMT+08:00 2046
Отпечаток сертификата:
MD5: C1:02:69:22:1F:DB:62:A2:75:B4:C3:B8:6A:55:0C:23
SHA1: 52:00:F8:BB:3B:3E:5B:DC:CF:BD:94:5A:30:A4:DF:C4:9D:33:54:EE
SHA256: 02:42:F3:F2:5B:9A:04:9A:28:FD:16:06:25:66:BF:28:F0:DE:14:42:69:04:60:DF:2C:AD:42:C0:51:6D:9B:57
Имя алгоритма подписи: SHA256withRSA
Метод открытого ключа субъекта: 2048 Кусочек RSA ключ
Версия: 3
Расширение:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 26 9F 73 C0 B7 BC 03 F2 6A 15 0A E1 B7 8C 0B 78 &.s.....j......x
0010: 1A 92 C4 8E ....
]
]
*******************************************
*******************************************
Пароль в красном прямоугольном поле — это пароль для подписанного файла;
Псевдоним и пароль в синем прямоугольном поле — это пароли, используемые для подписи APK;
У Android есть
Набор методов подписи,
Подпись V1 представляет собой подпись файла Jar; эта подпись имеет определенную небезопасность;
V2 Подпись всеиндивидуальный APK подпись файла ; Это в Android
Появился позже;
Для подписания версии 3 требуется обновление ключа подписи на Android;
Появился позже;