java获取手机已安装APK的签名摘要
将APK发布到应用商店或接入第三方的SDK时,有时需要提供APK的签名摘要信息,可以通过摘要算法MD5或SHA-1来获取签名的摘要,除了获取自己的APK签名,也可以获取手机上其他已安装的APK签名,只需要传入其他APK的包名即可。
private static final char[] HEX_CHAR = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; /** 获取签名的MD5摘要 */ public String[] signatureDigest() { pkgInfo = mContext.getPackageManager().getPackageInfo( mContext.getPackageName(), PackageManager.GET_SIGNATURES); int length = pkgInfo.signatures.length; String[] digests = new String[length]; for (int i = 0; i < length; ++i) { Signature sign = mPkgInfo.signatures[i]; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] digest = md5.digest(sign.toByteArray()); // get digest with md5 algorithm digests[i] = toHexString(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); digests[i] = null; } } return digests; } /** 将字节数组转化为对应的十六进制字符串 */ private String toHexString(byte[] rawByteArray) { char[] chars = new char[rawByteArray.length * 2]; for (int i = 0; i < rawByteArray.length; ++i) { byte b = rawByteArray[i]; chars[i*2] = HEX_CHAR[(b >>> 4 & 0x0F)]; chars[i*2+1] = HEX_CHAR[(b & 0x0F)]; } return new String(chars); }
以上就是本文的全部内容,希望对大家的学习有所帮助。
相关推荐
-
Android APK使用Debug签名重新打包 Eclipse更改默认Debug签名
对已有的apk文件进行重新打包,前面 Android签名机制:生成keystore.签名.查看签名信息 已经介绍了.本文介绍另外两种需求. 使用默认的Debug签名打包 如果直接使用Eclipse开发新程序,默认就会被打上Debug的签名,这个是地球人皆知,但是如果你是想Repack别人并且想使用Debug签名该怎么办? 首先需要找到你本机的默认签名的,一般位于C:\Users\用户名\.android\debug.keystore下,拷出来,然后打包,打包命令: 复制代码 代码如下: jars
-
Android签名机制介绍:生成keystore、签名、查看签名信息等方法
Android独有的安全机制,除了权限机制外,另外一个就是签名机制了.签名机制主要用在以下两个主要场合起到其作用:升级App和权限检查. 升级App 用户在升级一款已经安装过的App时,如果程序的修改来自于同一来源,则允许升级安装,否则会提示签名不一致无法安装的提示. 权限检查 我曾在Android Permission权限机制的具体使用一文中提过,对于申请权限的 protection level 为 signature 或者 signatureOrSystem 的,会检查权限申请者和权限声明
-
Android获取apk程序签名信息代码示例
复制代码 代码如下: 这是获取apk包的签名信息private String getSign(Context context) { PackageManager pm = context.getPackageManager(); List<PackageInfo> apps = pm.getInstalledPackages(PackageManager.GET_SIGNATURES); Iterator<PackageInfo> iter = apps.iterator()
-
修改Android签名证书keystore的密码、别名alias以及别名密码
Eclipse ADT的Custom debug keystore自定义调试证书的时候,Android应用开发接入各种SDK时会发现,有很多SDK是需要靠package name和keystore的指纹hash来识别的(百度地图SDK.又或是微信sdk.新浪微博的sdk),这样如果使用默认自动生成的debug keystore的话就会给开发调试工作带来一些麻烦.因为在生成这些开放平台需要带签名的apk生成的签名信息,再去申请到最后的秘钥.这时可以通过修改正式的release keystore,生
-
android应用签名详细步骤
1.准备工作apk的签名工作可以通过两种方式来完成: 1)通过ADT提供的图形化界面完成apk签名:右键项目--> Android Tools -->Export Signed Application Package... --> 打开图形界面2)完全通过shell/dos命令来完成apk签名 我比较喜欢第2)种方式,所以下面将讲解如何通过命令的方式完成apk签名. 给apk签名一共要用到3个工具,或者说3个命令,分别是:keytool. jarsigner. zipalign,下面是对
-
Android的APK应用签名机制以及读取签名的方法
发布过Android应用的朋友们应该都知道,Android APK的发布是需要签名的.签名机制在Android应用和框架中有着十分重要的作用.例如,Android系统禁止更新安装签名不一致的APK:如果应用需要使用system权限,必须保证APK签名与Framework签名一致,等等. 什么是签名 首先我们得知道什么是摘要,摘要是指采用单向Hash函数对数据进行计算生成的固定长度的Hash值,摘要算法有Md5,Sha1等,Md5生成的Hash值是128位的数字,即16个字节,用十六进制表示是32
-
Android应用程序签名步骤及相关知识介绍
本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名.为什么要给应用程序签名.如何给应用程序签名等. 1.什么是签名? 如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义.可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了.计算机所做的事情,或者说编程语言所做的事情,不正是在尽可能地模拟现实吗?所以,计算机中所说的签名和生活中所说的签名在本质上是一样的,它所起到的作用也是一致的! 让我们来看
-
如何安装系统认证签名过的APK
解决方法有如下两种: 第一种 如果你 repo sync 了 android 的整个源码,那么可以直接把你的 app 放到 /packages/apps 下面去 mm ,不过要记得在 Android.mk 中增加 LOCAL_CERTIFICATE 属性,这个属性具体有三个值: 系统中所有使用 android.uid.system 作为共享 UID 的 APK ,都会首先在 manifest 节点中增加android:sharedUserId="android.uid.system",
-
查看apk签名信息方法
用shell写了一个查看apk签名的脚本.代码很少也很简单 复制代码 代码如下: #!/bin/bash mkdir .temp_for_certificate cd .temp_for_certificate count=0 while [ -n "$1" ] do count=$[$count+1] echo "(#$count) "`basename "$1"`":" echo "" path=`ja
-
给Android的APK程序签名和重新签名的方法
签名工具的使用 Android源码编译出来的signapk.jar既可给apk签名,也可给rom签名的.使用格式: java –jar signapk.jar [-w] publickey.x509[.pem] privatekey.pk8 input.jar output.jar -w 是指对ROM签名时需使用的参数 publickey.x509[.pem] 是公钥文件 privatekey.pk8 是指 私钥文件 input.jar 要签名的apk或者rom output.jar 签名后生成
-
Android 给空白包签名并上传审核
前言:之前公司app在腾讯开放平台认领应用时,涉及了一个问题:就是给空白包签名.然后再上传上去审核. 应用能在Android 系统上安装必须是经过有私有key的证书数据签名.Android系统通过证书确定应用的作者,和与应用建立信任关系.证书不会用于控制应用的安装.证书不需要权威机构签名:它是非常完美和标准. 关于签名的一些重要点: •所有的应用必须签名(android 有默认签名). •测试和调试应用,构建工具用指定的调试密钥(android sdk 构建工具创建的)签名你的应用. •在发布给
-
解决在eclipse中将android项目生成apk并且给apk签名的实现方法详解
生成apk最懒惰的方法是:只要你运行过android项目,到工作目录的bin文件夹下就能找到与项目同名的apk文件,这种apk默认是已经使用debug用户签名的.如果想要自己给apk签名:1.签名的意义为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装).2.签名的步骤a.创建keyb.使用步骤a中产生的key对ap
-
Android实现获取签名及公钥的方法
本文实例讲述了Android实现获取签名及公钥的方法.分享给大家供大家参考.具体如下: 1. java代码如下: private byte[] getSign(Context context) { PackageManager pm = context.getPackageManager(); List<PackageInfo> apps = pm .getInstalledPackages(PackageManager.GET_SIGNATURES); Iterator<Package
-
教你如何使用platform密钥对apk进行签名
1.进入<Android_Source_Path>/build/target/product/security,找到[platform.pk8]和[platform.x509.pem]系统密钥. 2.进入<Android_Source_Path>/build/tools/signapk找到SignApk.java,运行javac编译成SignApk.class 3.执行命令java com.android.signapk.SignApk platform.x509.pem plat
-
jarsigner重新签名apk无法安装的解决方法
因为一些原因,要给未签名的apk重新签名,需要用到jarsigner工具,但是签名之后,apk无法安装,百思不得其解.终于找到一个解决方案,现在分享给大家: 在签名时,要加上2个参数: 复制代码 代码如下: -digestalg SHA1 -sigalg MD5withRSA 造成无法签名错误的原因,初步估计是JDK版本的问题.JDK 1.6签名没事,但是1.7会出这个问题. 完整的签名命令如下: 复制代码 代码如下: jarsigner -verbose -keystore feelyou.k
随机推荐
- javascript 面向对象编程基础:继承
- 浅析IOS中播放gif动态图的方法
- 判断JavaScript对象是否可用的最正确方法分析
- javascript中Array数组的迭代方法实例分析
- .NET中实现彩色光标、动画光标及自定义光标的方法
- Android编程实现自定义手势的方法详解
- 第二章之Bootstrap 页面排版样式
- Eclipse去除js(JavaScript)验证错误
- js实现仿Discuz文本框弹出层效果
- jquery简单插件制作(fn.extend)完整实例
- 解决jquery中美元符号命名冲突问题
- 获取下拉列表框的值是数组,split,$.inArray示例
- Android实现手机壁纸改变的方法
- django与vue的完美结合_实现前后端的分离开发之后在整合的方法
- Python3爬虫之自动查询天气并实现语音播报
- Vue resource三种请求格式和万能测试地址
- 详解bash中的脚本调试机制
- Java处理异常2种机制关键字区别解析
- SpringBoot配置嵌入式Servlet容器和使用外置Servlet容器的教程图解
- Vue.js原理分析之nextTick实现详解