app签名作用:
保证app安装包是来自其私钥的拥有者并未被覆盖。也表明app的拥有者.
所有app的签名是唯一的,如app签名重复,则安装时会报错,一定需要卸载签名相同的原安装程序才能装新的。
签名操作原理
1,遍历app安装包,对每个文件先SHA1编码再BASE64编码,生产文件的一次摘要,并把每个文件的所有一次摘要保存至MANIFEST.MF文件中。把MANIFEST.MF存于安装包的meta-inf文件夹内。
2,对MANIFEST.MF的文件内容先SHA1编码再BASE64编码,生成总摘要,保存至CERT.SF文件中,遍历MANIFEST.MF中的所有文件的一次摘要,再次先SHA1编码再BASE64编码,生成文件的二次摘要。并把所有的文件的二次摘要保存至CERT.SF文件中,把CERT.SF存于安装包的meta-inf文件夹内。
3,对CERT.SF的提取出摘要(这部份还没弄明白),用私钥加密形成签名,把这个签名,公钥,加密算法和信息发布机构信息等保存至CERT.RSA文件内,把CERT.RSA存于安装包的meta-inf文件夹内。
签名后的appSigned.apk多了以下三个文件 MANIFEST.MF, CERT.RSA, CERT.SF。
MANIFEST.MF 保存了所有文件的SHA-1并base64,即app.apk的消息摘要
CERT.SF 保存了对MANIFEST.MF的文件SHA-1并base64(摘要值)。以及MANIFEST.MF中每一个摘要项的SHA-1并base64(摘要值)
CERT.RSA 包含公钥信息,所采用的加密算法和信息发布机构信息
签名认证原理
1, 从appSigned.apk内获取签名证书(含公钥),签名,以及消息摘要算法。
2, 用公钥解密签名,得到摘要。 从CERT.SF文件中的内容(此部分没弄清楚)对其SHA1生成摘要,两个摘要相比,可证明CERT.SF文件未被篡改。
3,对MANIFEST.MF的文件内容先SHA1编码再BASE64编码,生成总摘要,和CERT.SF中的总摘要比较,遍历MANIFEST.MF中的文件的一次摘要,先SHA1编码再BASE64编码,生成文件的二次摘要,并和CERT.SF中相应的文件二次摘要比较,如果相同则证明是MANIFEST未被篡改。
4,对安装包内的每个文件先SHA1编码再BASE64编码,生产文件的一次摘要,并和MANIFEST.MF中的相应的文件一次摘要比较,如相同则证明是安装包内的文件未被篡改。
如一致则认证通过。由于只有发送者才有加密摘要的私钥,所以我们可以确定信息一定是发送者发送的
签名原理http://blog.csdn.net/kickxxx/article/details/18252881
证书格式http://liuleijsjx.iteye.com/blog/433853
相关推荐
API接口生成签名与验证签名思路,本文只提供生成签名的思路和验证签名的思路,不喜勿碰
基于OpenSSL库的ECDSA签名与验证,实现了密钥对生成导出,数据的签名以及签名的验证。仅供参考。附代码和文档
C#中RSA加解密和签名与验证的实现 源码,调用即可,保证可用,测试通过
本文设计了一个数字签名及签名验证系统。该系统基于RSA和MD5算法以及 Winsock通信,并利用Java作为编程语言,JCreator作为开发工具,成功实现了对选定文件进行数字签名及其签名验证。 系统由客户端和服务器端两部分...
用java写的RSA签名及其验证代码,密钥等传递可以使用编码格式,大家可以看看! 用java写的RSA签名及其验证代码,密钥等传递可以使用编码格式,大家可以看看! 用java写的RSA签名及其验证代码,密钥等传递可以使用...
1、生成密钥对 2 2、导出私钥 2 3、导出公钥 3 4、生成密钥源代码 3 1、导入私钥 8 2、数据签名 8 3、数据签名源代码 8 1、导入公钥 14
针对流式数据实时性要求和传输中易丢包的特点, 重点分析了Golle 增强链流式数据签名方案, 基于Gilbert-Elliot 网络通道模型, 提出了Hash 值前置的星-链型流式数据签名验证方案。该方案在发送方预先缓存流序列, 可...
主要涉及利用RSA 产生密钥对,导入公私钥对数据利用MD5提取HASH值,再次利用RSA进行签名,加密。 然后再对数据进行解密、验证。其中主要是利用windows api实现rsa和md5算法的实现。本代码为VS2010实现
C#RSA加密解密签名和验证签名的小例子,代码都加了注释,可以很容易看懂.如果应用到消息收发,发送方用公钥加密,接收方用私钥解密.如果是应用到软件注册方面,则需要客户端保留公钥,程序开发者保留私钥.使用签名和验证...
国密签名和验证签名的例子demo, VS2008打开, 高版本的可能会编译有问题
Api签名验证样例
基于OpenSSL实现RSA签名与验证流程,使用了RSA_NO_PADDING mode
基于openssl的RSA的加密,解密,签名和验证签名, RSR加密 RSA解密 openssl签名 openssl验签, 基于openssl的RSA的加密,解密,签名和验证签名
一键去除签名验证的软件.apk,安卓用的
利用RSA算法进行加密解密与签名验证,基于VC6.0开发,使用MFC。
java数字签名(签名生成,用证书验证签名)
验证exe文件数字签名,使用API。很简单的DEMO。
java简单实现验证签名
openssl签名和验证;openssl签名和验证;openssl签名和验证;
扩展RSA签名算法__实现双人签名、验证.pdf 扩展RSA签名算法__实现双人签名、验证.pdf