数据摘要:
**数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法、散列算法。(百度百科)。
1,CRC(Cyclic Redundancy Check,循环冗余校验)
2、MD2 、MD4、MD5
Ron Rivest(RSA公司)在1992年提出,被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。
都产生16字节(128位)的校验值,一般用32位十六进制数表示。MD2的算法较慢但相对安全,MD4速度很快,但安全性下降,MD5比MD4更安全、速度更快。
3、SHA1、SHA256、SHA384、SHA512
SHA系列算法的摘要长度分别为:SHA为20字节(160位)、SHA256为32字节(256位)、 SHA384为48字节(384位)、SHA512为64字节(512位),由于它产生的数据摘要的长度更长,因此更难以发生碰撞,因此也更为安全,它是未来数据摘要算法的发展方向。由于SHA系列算法的数据摘要长度较长,因此其运算速度与MD5相比,也相对较慢。
4、RIPEMD、PANAMA、TIGER、ADLER32 等(详见百科)。MD5、SHA1虽然被发现存在缺陷(碰撞),但在近几年内,仍然可以大量使用。
Hash(散列函数):简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
主要特点:
1,固定长度
2,不可逆
3,输入输出结果确定。
jarsigner与signapk签名
jarsigner签名时,需要的是keystore文件,而signapk签名的时候是pk8,x509.pem文件。
jarsigner签名是eclipse中默认的签名方式。
keystore文件和pk8,x509.pem文件之间可以互相转化。
关于数字证书的介绍:
那么目前的apk中加密的形式是:
签名机制流程:
1、对Apk中的每个文件做一次算法(数据摘要+Base64编码),保存到MANIFEST.MF文件中。
2、对MANIFEST.MF整个文件做一次算法(数据摘要+Base64编码),存放到CERT.SF文件的头属性中,在对MANIFEST.MF文件中各个属性块做一次算法(数据摘要+Base64编码),存到到一个属性块中。
3、对CERT.SF文件做签名,内容存档到CERT.RSA中
参考博客地址: http://blog.youkuaiyun.com/jiangwei0910410003/article/details/50443505