Đây không phải là câu hỏi về cách ký một tệp .apk. Tôi muốn biết việc ký kết thực sự có nghĩa là gì và nó được thực hiện như thế nào.Làm thế nào để tệp .apk được ký
Bên trong tệp .apk có thư mục META-INF và bên trong có hai tệp.
Đầu tiên là CERT.SF chứa SHA1 băm cho các thành phần khác nhau và trông như thế này:
Name: res/layout/main.xml
SHA1-Digest: Cox/T8fN1X9Hv4VqjH9YKqc/MsM=
Name: AndroidManifest.xml
SHA1-Digest: wZ418H9Aix1LNch3ci7c+cHyuZc=
Name: resources.arsc
SHA1-Digest: P+uoRrpFyVW6P3Wf+4vuR2ZSuXY=
Name: classes.dex
SHA1-Digest: cN3zXtGii9zuTOkBqDTLymeMZQI=
Ngoài ra còn có một tập tin gọi CERT.RSA. Tôi cho rằng đó là chìa khóa công khai để xác minh chữ ký.
Câu hỏi của tôi là, chữ ký cho toàn bộ tệp .apk được lưu trữ ở đâu? Và những gì thực sự đã được ký kết? Nó có thể là một trong hai tập tin
- .apk sử dụng như một đối tượng nhị phân đơn và điều này được ký
- hoặc CERT.SF được ký kết, trong đó có băm cá nhân cho các thành phần khác nhau
Sẽ còn nhiều tốt hơn nếu bạn có thể chỉ cho tôi tài liệu về quá trình ký và xác minh chi tiết.
Martin, tôi đang cố gắng sao chép bước cuối cùng (tạo tệp .RSA) bằng .NET. Dữ liệu đầu vào cần ký, tôi có nên xem đó là các mục nhập tệp trong tệp .SF (tức là 3 dòng) không? Dữ liệu này có nên được mã hóa dưới dạng UTF8 hoặc Unicode không? Tôi không thể tạo ra cùng một đầu ra (mặc dù) tương tự như công cụ jarsigner cho cùng một chứng chỉ/dữ liệu. Mọi gợi ý sẽ hữu ích! –