- 浏览: 82301 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (89)
- 源码 (2)
- tomcat服务器连接数问题解决方法 (2)
- Android (26)
- JAVA 基本 (17)
- 设计模式 (6)
- Spring Struts Hibernate ibatis Web (9)
- 汇总小结 (1)
- 性能优化 (1)
- 小算法 (1)
- Android 异常 (1)
- Http web (1)
- Linux (4)
- C C++ (1)
- JNI ANDROID (1)
- UML (1)
- 其他 (1)
- 图像 (1)
- Spring (2)
- 分布式集群 (1)
- 数据库 (4)
- jquery (1)
- oracle和mysql 积累 (0)
- struts (1)
- 宕机 (1)
- mybaties (1)
- DH_Robot1_Chn_LeChange-Baby_V1.000.0005.3.R.160407.zip (0)
- 积累 (1)
- 架构 (1)
- 基础问题? (0)
- 111 (0)
最新评论
-
jbeduhai:
表达贴切,顶一个
ThreadLocal
命令:
生成keystone(存放一组证书和私钥的地方)
keytool -genkey -alias(别名) hello -keyalg RSA -validity 20000 -keystore hello.keystore
查看keystore 信息
keytool -list -v -keystore hello.keystore -storepass 123456
缺省情况下,-list 命令打印证书的 MD5 指纹。而如果指定了 -v 选项,将以可读格式打印证书,如果指定了 -rfc 选项,将以可打印的编码格式输出证书。
keytool -list -rfc -keystore hello.keystore -storepass 123456
证书的导出:
keytool -export -alias test -keystore hello.keystore -file test.crt -storepass 123456
证书的导入
keytool -import -alias rootcert -file root.crt -keystore hello.keystore
证书条目的删除:
keytool -delete -alias ceatecert1 -keystore .keystore -storepass 123456
使用jdk的jarsigner工具对apk文件签名
jarsigner -verbose -keystore hello.keystore TestApk.apk test
签名后可以使用如下命令验证是否签名成功:
jarsigner -verify to_sign.apk
如果需要查看更详细的验证信息,可修改为:
jarsigner -certs -verbose -verify to_sign.apk
获取证书信息相关方法:
package com.nec.test; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.security.KeyStore; import java.security.PublicKey; import java.security.cert.Certificate; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import android.app.Activity; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageParser; import android.os.Bundle; import android.os.Environment; import android.util.DisplayMetrics; import android.util.Log; public class TestApkActivity extends Activity { /** Called when the activity is first created. */ private static final String FILENAME = "cacerts.bks"; private static final String FILENAME_CERT = "ca.crt"; //test.crt \ ca.crt private List<PublicKey> listKey = new ArrayList<PublicKey>(); private File file; static final String IN_FILE_NAME = "c:\\Documents and Settings\\2172980000522\\TestApk.apk"; static final String OUT_FILE_NAME = "c:\\Documents and Settings\\2172980000522\\TestApk.Zip"; private final static String PATH = "/sdcard/fcding.apk"; // TestApk.apk @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // readCacerts(FILENAME); try { readCert(FILENAME_CERT); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } TestApkActivity activity = new TestApkActivity(); PackageInfo pi = activity.parsePackage(PATH, PackageManager.GET_SIGNATURES); String issuerDN = null; String subjectDN = null; String publickey = null; try { byte[] signature = pi.signatures[0].toByteArray(); // String hash = md5(signature); CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate) certFactory.generateCertificate( new ByteArrayInputStream(signature)); issuerDN = cert.getIssuerDN().toString(); Log.d("TRACK", issuerDN); subjectDN = cert.getSubjectDN().toString(); Log.d("TRACK", subjectDN); publickey = cert.getPublicKey().toString(); Log.d("TRACK", publickey); System.out.println("====================++++++++++++++++++++"+listKey.contains(cert.getPublicKey()) ); } catch (CertificateException e) { e.printStackTrace(); } } private PackageInfo parsePackage(String archiveFilePath, int flags){ PackageParser packageParser = new PackageParser(archiveFilePath); DisplayMetrics metrics = new DisplayMetrics(); metrics.setToDefaults(); final File sourceFile = new File(archiveFilePath); PackageParser.Package pkg = packageParser.parsePackage( sourceFile, archiveFilePath, metrics, 0); if (pkg == null) { return null; } packageParser.collectCertificates(pkg, 0); return PackageParser.generatePackageInfo(pkg, null, flags, 0, 0); } private void readCert(String fileName) throws Exception{ try { CertificateFactory cf = CertificateFactory.getInstance("X.509"); InputStream in = getAssets().open(fileName); Certificate c = cf.generateCertificate(in); PublicKey publicKey = c.getPublicKey(); listKey.add(publicKey); System.out.println("********---------------**********"+publicKey.toString()); } catch (Exception e) { e.printStackTrace(); } } private void readCacerts(String filename) { try { InputStream inputStream = getAssets().open(filename); KeyStore keyStore = KeyStore.getInstance("bks"); keyStore.load(inputStream, null); file = new File(Environment.getExternalStorageDirectory(), "a.txt"); getApplication().openFileOutput("a.txt", Context.MODE_APPEND); FileOutputStream outputStream = new FileOutputStream(file); copyStream(keyStore, outputStream); Log.i(TAG, "File create Success"); } catch (Exception e) { e.printStackTrace(); } } private void copyStream(KeyStore keyStore, OutputStream fileOutputStream) throws Exception { Enumeration<String> enumeration = keyStore.aliases(); while (enumeration.hasMoreElements()) { String element = enumeration.nextElement(); Certificate certificate = keyStore.getCertificate(element); listKey.add(certificate.getPublicKey()); String content = certificate.toString(); System.out.println("================"+content); fileOutputStream.write(content.getBytes()); } } }
http://www.blogjava.net/zh-weir/archive/2011/07/19/354663.html
APk 签名 调用隐藏包
发表评论
-
HTC 刷机问题
2012-08-14 09:56 7041,没有运用工具刷机 2,没有备份系统还原 3,解锁 4 ... -
Android Parcelable
2012-05-31 21:11 1960Parcelable 传递对象时候用 Androi ... -
Android Handler
2012-05-29 16:53 593handler 将线程放入队列 Handler.poser( ... -
关于分辨率 多机型 dip px ........
2012-05-22 15:04 843320x480 (水平方向有320个像素点.垂直方向有480个 ... -
View 相关
2012-05-17 15:47 723转载文字http://hunankeda110.itey ... -
bitmap 内存溢出
2012-04-23 16:53 1236http://dyh7077063.iteye.com/blo ... -
风暴ssssss
2012-03-30 16:31 01 。做个以物易物的应用 2。大众服务和个性定制 3.菜单 ... -
Android 异常
2012-05-17 16:53 580dialog 无法依托 activity 时候 a ... -
Android title 高度定义
2012-02-04 15:56 978mainifast.xml : <activit ... -
Android apk 安装脚本
2011-11-02 17:09 1013@echo off set cur_dir=%cd% ... -
Android 基本汇
2011-10-26 09:40 7171 Activity 生命周期 一般 ... -
Android UI Listview
2011-10-18 15:39 8331. list.setAdapter(adapter); ... -
Android 动画
2011-10-12 13:30 896http://www.htcplayer.com/thread ... -
Android 源码
2011-09-05 12:51 2542http://blog.csdn.net/maxleng/ar ... -
android 上开发air flash
2011-07-08 16:55 739http://www.jamesward.com/ ... -
登录web服务器jsonAndroid
2011-05-30 16:28 636如下: -
自定义组件
2011-05-30 15:25 734http://www.cnblogs.com/TerryBlo ... -
Android 远程回调
2011-05-19 12:39 17161.点击button 发送Handler1 Message ... -
Listview 表格
2011-05-13 10:40 677http://blog.csdn.net/hellogv/ar ... -
android TextView的字体颜色设置的多种方法
2011-05-11 09:49 1569TextView 的字体设置: 1 、直接通过配置文 ...
相关推荐
进一步完善全国中小学信息技术创新与实践大赛(以下简称NOC 大赛)指导教师规范,经研究,决定面向 NOC 大赛竞赛辅导人员实施认证,只有认证通过后才可以署名为指导教师。 提示:在完成18节课后,学习进度可以达到...
计算机界神级人物、谷歌人工智能主管Jeff Dean发表了独自署名论文《The Deep Learning Revolution and Its Implications for Computer Architecture and Chip Design》,17页pdf论文,长文介绍了后摩尔定律时代的...
作者:林庆忠,1990年毕业于昆明工学院计算机软件专业,后又于1999年毕业在南京大学完成软件工程专业硕士的学习,现供职于CNPC旗下的一个行业软件研发中心,
同一科研团队的科研论文在重点实验室与院系同时署名时,存在并列署名与单独署名两种格式,且重点实验室的中英文的名称与各级行政机关规定的命名要求不符。重点实验室作为独立的科研实体,与高校院系不同,由各级行政...
购房合同署名可以增加吗.doc
这个插件是由网站付费请韭菜饺子开发的,版权属于某网站,但作者韭菜饺子有署名权。 因为是一个专业领域网站,所以不希望外人打扰,请不要参观、围观以及各种方式的不负责任观光,然后留下一堆没用的帐号。(无关人...
电视节目版权管理——署名管理.pdf
购房合同署名可以增加吗精选.doc
初中语文文摘励志钱锺书的署名
2014年秋八年级政治上册第七课《我有署名权》(第1课时)他享有署名权吗?课件人民版.ppt
行业文档-设计装置-可署名笔
HTML5-太空侵略者 ... 怎么玩 ... 弃用说明 过时的回购。 查看库以获取更多更新版本。 演示: : ...这项作品是根据知识共享署名-相同方式共享3.0-未移植许可证(CC BY-SA 3.0)许可的。 许可证的文本可从。
大佬联合署名!反对 ACL 设置匿名期!.rar
大佬联合署名!反对 ACL 设置匿名期!.pdf
正版自制月亮近景PSD,纹理可见,清晰绚丽。 我自己微调过几个小时,比较满意,...本作品采用知识共享 署名 4.0 国际 许可协议进行许可。访问 http://creativecommons.org/licenses/by/4.0/deed.zh 查看该许可协议。
《中国医疗美容》关于文章作者署名的要求.pdf
尽管软件显然是开放知识的一个重心内容,但软件在此并不包含在定义内,这是因为以前的工作(比如开源软件)已经较好的陈述了相关问题。 「作品」一词指被传递的知识本身或知识依附的物件。 「作品集」一词指作品的...
基于论文作者署名位置的广义“陪护人效应”检测.docx
八年级政治上册第七课我有署名权课件人民版.ppt