Có cách nào để truy xuất thông tin về chữ ký apk khi chạy không?Lấy chữ ký apk khi chạy cho Android
Ví dụ: Tôi có cùng một ứng dụng được ký với 2 chữ ký khác nhau: app-1.apk và app-2.apk và tôi muốn có thể phân biệt cả hai apk trong thời gian chạy. Điều đó có thể không?
Mục tiêu của tôi là triển khai hệ thống cấp phép bằng máy chủ bên ngoài và dựa trên mã phiên bản của ứng dụng và chữ ký.
Đúng vậy, ngoại trừ những gì các cuộc gọi API 'chữ ký' thực sự là _certificate_ ký. Gọi 'toByteArray()' để lấy chứng chỉ thô. Ngoài ra, 'hashCode()' không mua cho bạn nhiều, bạn cần sử dụng 'MessageDigest' để tính giá trị băm chứng chỉ để so sánh. –
@NikolayElenkov Đây có thể là một bài đăng cũ nhưng tôi cần mã này được triển khai. Sự khác nhau giữa việc ký cert và cert thô là gì? Khi tôi sử dụng phương thức 'toByteArray()' thay vì 'hashCode()' my 'MD5' checksum thay đổi mỗi khi tôi chạy' .apk' một lần nữa trong khi chỉ sử dụng 'hashCode()' giữ nó ổn định trừ khi tôi biên dịch lại ứng dụng. Những gì tôi muốn là để xác định keystore được sử dụng để ký '.apk'. – Synaero
'hashCode()' không trả về tổng kiểm tra MD5, đó là một giá trị ngẫu nhiên nhiều hơn hoặc ít hơn xác định đối tượng trong thời gian chạy. sử dụng 'MessageDigest.getInstance (" MD5 "). digest (sigs [0] .toByteArray())'. BTW, không có điểm nào trong việc xác định 'kho khóa', bạn cần xác định khóa/chứng chỉ ký. –