加解密入门
2015-06-17 16:25
411 查看
1.Base64
目的:在传输的过程中,避免出现最高字节为“1”的情况(即需要标准的ascii)。
实现:3字节转换成4字节(至少增加1/3的空间)。在3字节一组中,每六位形成一组,最高两位补0。A-Z a-z 0-9 + / =(pad)。
备注:末尾不足3字节,用0补。最多会出现两个pad(=)。
2.常用的加密算法
(1)RSA加密算法
(2)DSA加密算法
证书:公钥 + 所有者 + CA(发证机关)签名 +
有效期 +。。。
签名:将输入串通过私钥加密转换得到的数字序列。
3. SHA1
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。
perl sha1(http://perldoc.perl.org/Digest/SHA.html)
4.APK包中的签名文件【1】
(1).MF :每个文件的 整体 SHA1-BASE64编码
(2).SF :MF文件中关于每个文件的hash值的 头三行 SHA1-BASE64编码(可以取出mf每一项的值,保存到文本中)(注意末尾有两个换行)
(3).RSA:十六进制).SF文件的签名 + 开发者公钥 (自己是CA)
5.为什么要对APK签名【2】
(1)签名的原理(http://blog.csdn.net/kickxxx/article/details/18252881)
(2)保证文件的完整性
(3)签名工具:
http://blog.chinaunix.net/uid-17102734-id-2830223.html(java中Keytool的使用总结) http://blog.csdn.net/litton_van/article/details/7109566(生成密钥库以及签名)
6.手动keytool方式签名apk
(1)密钥对的生成
![](http://img.blog.csdn.net/20150619200136505?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemF0MTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(2)
查看密钥
![](http://img.blog.csdn.net/20150619200235415?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemF0MTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(3)
默认debug模式的RSA
![](http://img.blog.csdn.net/20150619200311782?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemF0MTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(4)
不签名 (或者签名出错时候)的apk报错:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
(5)
查看签名信息:
备注:此类方式签名比较复杂,使用auto_sign便可以快速完成签名,然后安装。
(7)查看.RSA文件内容(Linux command)
参考文献:
【1】
【2】
【3】(签名比对)
【4】apk crack
目的:在传输的过程中,避免出现最高字节为“1”的情况(即需要标准的ascii)。
实现:3字节转换成4字节(至少增加1/3的空间)。在3字节一组中,每六位形成一组,最高两位补0。A-Z a-z 0-9 + / =(pad)。
备注:末尾不足3字节,用0补。最多会出现两个pad(=)。
2.常用的加密算法
(1)RSA加密算法
(2)DSA加密算法
证书:公钥 + 所有者 + CA(发证机关)签名 +
有效期 +。。。
签名:将输入串通过私钥加密转换得到的数字序列。
3. SHA1
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。
perl sha1(http://perldoc.perl.org/Digest/SHA.html)
4.APK包中的签名文件【1】
(1).MF :每个文件的 整体 SHA1-BASE64编码
(2).SF :MF文件中关于每个文件的hash值的 头三行 SHA1-BASE64编码(可以取出mf每一项的值,保存到文本中)(注意末尾有两个换行)
(3).RSA:十六进制).SF文件的签名 + 开发者公钥 (自己是CA)
5.为什么要对APK签名【2】
(1)签名的原理(http://blog.csdn.net/kickxxx/article/details/18252881)
(2)保证文件的完整性
(3)签名工具:
http://blog.chinaunix.net/uid-17102734-id-2830223.html(java中Keytool的使用总结) http://blog.csdn.net/litton_van/article/details/7109566(生成密钥库以及签名)
6.手动keytool方式签名apk
(1)密钥对的生成
keytool -genkeypair -v -keystore zhouat.keystore -alias zhouat -keyalg RSA -validity 10980
(2)
查看密钥
keytool -list -v -keystore zhouat.keystore
(3)
默认debug模式的RSA
(4)
不签名 (或者签名出错时候)的apk报错:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
(5)
查看签名信息:
jarsigner -verify -verbose –certs test.apk(6)对apk文件签名
jarsigner -verbose -keystore zhouat.keystore test.apk zhouat -sigalg SHA1withRSA -digestalg SHA1
备注:此类方式签名比较复杂,使用auto_sign便可以快速完成签名,然后安装。
(7)查看.RSA文件内容(Linux command)
openssl pkcs7 -inform DER -in test.RSA -noout -print_certs -text
参考文献:
【1】
http://blog.csdn.net/xueerfei008/article/details/26339765
http://blog.csdn.net/feiyangxiaomi/article/details/40298155
http://developer.android.com/tools/publishing/app-signing.html#setup
http://www.cnblogs.com/ayanmw/p/3720804.html
【2】
http://www.cnblogs.com/not-code/archive/2011/05/15/2047057.html
【3】(签名比对)
http://www.blogjava.net/zh-weir/archive/2011/07/19/354663.html
【4】apk crack
http://www.blogjava.net/zh-weir/archive/2011/06/11/352099.html
相关文章推荐
- rootless 关闭,打开
- 读载波地址的方法
- java获取当前年月日
- 微软100题(97)洗牌算法
- 网站可以免费做业务CMS讨论
- 《你的灯亮着吗》读书笔记一
- Java仿文库的基本方法(openoffice+swftools+flexPaper)
- jdk1.8新特性
- 在ubuntu 用wget下载 oracle的 jdk的时候
- 支付宝快速集成
- 网投简历制作要点(2)
- DFS与BFS的总结
- css postion
- 欢迎使用CSDN-markdown编辑器
- 《大道至简》读书笔记 第3篇
- offboard Control
- 常用的SQL 总结
- mongoose CastError: Cast to ObjectId failed for value
- centos64位安装nginx
- Spring集成Quartz定时任务框架介绍和Cron表达式详解