数字签名相关

android 创建数字签名应用程序
一些人说android只支持BKS证书。不知道真还是假,所以首先创建了BKS证书。
步骤:
1、下载bcprov-jdk16-141.jar,放到\jre\lib\ext目录下
2、修改文件  jre6\lib\security\java.security, 在文件中添加:  security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
   在这个文件中找到security.provider字样,后面序号递增,本机递增到10
3、创建keystore。命令:
      keytool -genkey -alias <别名> -keypass <密钥口令>  -keyalg Test -keysize 1024 -validity 365 -keystore <库文件名,如runcerts.keystore> -storepass <证书库密码> -dname "cn=testUsr, ou=产品部, o=XXX公司, c=CN, S=shandong" -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider
 4、签名及验证
   //读取密钥库:
   FileInputStream is=new FileInputStream("C:\\Inetpub\\runcerts.keystore");
    KeyStore ks=KeyStore.getInstance("BKS","BC");
    ks.load(is,"123456".toCharArray());
   is.close();
  
//读取私钥
 PrivateKey priKey1=(PrivateKey)ks.getKey("test2", "123456".toCharArray());
  privateKeyString =getKeyString(priKey1);
//签名
   SignText=DataSign(plainText,privateKeyString); 


//以下验证  
    //获得证书
  Certificate certificate=ks.getCertificate("test2");
  //获得证书
  PublicKey publicKey1=certificate.getPublicKey();
  
  publicKeyString=getKeyString(publicKey1);
  
//验证
  byte[]plainText1="Happy New Year!!Email:@qq.com".getBytes(); 
  boolean verySign=verify(plainText1,publicKeyString,SignText);
  String s2 = new Boolean(verySign).toString();
  System.out.print("验证结果:"+s2+"/n");


 

说明:大体是这个步骤,具体还有一些细节代码没有粘贴。




 
Android应用数字签名详解
标签: androidandroid studiokeytool-签名
2015-11-26 15:23 5163人阅读 评论(0) 收藏 举报
  分类:
Android应用开发(94)  
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
目录
目录
概述
数字签名证书生成方法
o 命令行工具keytooljarsinger
o Android Studio
o  小结
查看应用签名信息
o 查看自签名证书的信息
o 查看第三方应用或Android系统应用签名证书信息
________________________________________
概述
Android系统要求所有的应用必须被证书进行数字签名之后才能进行安装。android系统通过该证书来确认应用的作者,该证书是不需要权威机构认证的,一般情况下应用都是用开发者的自签名证书,该证书是确保应用程序和应用程序作者之间建立信任关系,而不是用来决定用户可以安装哪些应用程序。
应用进行数字签名的好处和注意事项如下:
1. Android所有的应用程序必须要有数字证书签名,Android系统不会安装一个没有数字证书签名的程序。
2. Android系统中,系统app使用的是平台证书签名,而第三方app一般使用开发者的自签名证书。
3. Release版本的第三方app(例如淘宝、支付宝、微信),必须使用一个合适私钥生成的数字证书来给程序进行签名,并且保证每次的迭代新版本都是使用相同的证书进行数字签名。不然的话,新版本和旧版本的数字证书不一致,Android系统会认为这是两个不同的app,导致更新等操作失败。
4. 数字证书是存在有效期的,这也决定了app的预计生命周期,如果数字证书超期失效,则应用无法安装或者无法正常升级。
5. Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。 不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。
________________________________________
数字签名证书生成方法
声明:实验生成的keystore只是作为演示使用,并没有实际应用到项目中。大家参考时也要根据我的博客手工修改部分参数,切忌无脑照抄!
Android是使用标准的Java工具keytool和jarsigner来生成数字证书,而目前市场上第三方IDE(Android Studio和Eclipse)都是通过图形化系统帮我们封装了这两个工具的具体执行步骤。 
接下来,我会介绍两种生成数字签名证书的方式,分别通过命令行和Android Studio进行生成。
________________________________________
命令行工具(keytool&&jarsinger)
由于Android的数字签名证书是用java标准工具生成的(路径为:$JAVA_HOME/bin目录下),那我们当然可以在命令行生成数字证书了,具体方法如下。
1. 使用keytool生成数字签名证书。示例命令如下:
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
1
1
参数详解:
-keystore : 指定生成数字签名证书的文件名和路径。
-alias:指定证书的别名。
-keyalg:指定生成证书所需要的算法。
-keysize:指定证书大小。
-validity:指定证书的有效期,单位为天。
示例截图如下: 
 
1. 使用生成的keystore,利用jarsinger为应用进行签名。示例命令如下:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name
1
1
参数详解:
-sigalg:签名算法的名称。
-digestalg:摘要算法的名称。
-keystore : 指定签名证书的位置。
alias_name:签名证书的别名。
示例截图如下:
 
1. google官方同时推荐使用zipalign工具对签名的apk进行优化。该工具位于Android SDK的/build-tools/版本号/目录下。示例命令如下:
zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
1
1
示例截图如下: 
 
________________________________________
Android Studio
使用命令行的方式可以显得geek,并且让我们更多的了解实现细节。但是,平时应用开发中更多的是注重效率,因此,我们可以采用目前google官方推荐的AS帮我们实现应用数字签名功能。具体步骤如下。
1. 选择编译Module->Build->Generate Signed APK->选择编译Module->Next。
 
1. 选择Create new,创建一个新的数字签名证书。 
 
2. 填写证书信息。 
 
填写完成之后,我们点击OK,就可以生成我们的数字签名证书了。
上述工作完成后,我们就生成了数字签名证书,但是还没有对我们的apk进行签名。想要用生成的数字证书对apk进行签名,还需要修改当前Module的build.gradle文件,增加签名命令,具体内容如下:
android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"


    defaultConfig {
        applicationId "××××××"
        minSdkVersion 8
        targetSdkVersion 19
    }


    signingConfigs {
        debug {
            // 配置debug版本的数字签名证书
            storeFile file("/home/wzy/Documents/keystore/simple-weather.jks")
            storePassword "123456"
            keyAlias "release-key"
            keyPassword "123456"
        }
        release {
            // 配置release版本的数字签名证书(为了方便,这里的release版本和debug版本共用一个数字签名证书)
            storeFile file("/home/wzy/Documents/keystore/simple-weather.jks")
            storePassword "123456"
            keyAlias "release-key"
            keyPassword "123456"
        }
    }


    buildTypes {
        release {
            // 配置release版本的数字签名
            signingConfig signingConfigs.release
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
        debug {
            // 配置debug版本的数字签名
            signingConfig signingConfigs.debug
        }
    }
    lintOptions {
        abortOnError false
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
当然,上述命令Android Studio也提供了图形化界面进行操作,可以直接在Module Settings进行设置,截图如下(ps:我还是喜欢手动配置)。 
 
________________________________________
 小结
Android应用可以在debug和release两种模式下进行数字证书签名。在Android Studio中,我们直接点击Run使用的是debug模式,我们在命令行敲击bash gradle :$module_name:build使用的是release模式。 
debug模式下签名是为了开发调试,release模式下进行签名则是为了正式发布。 
Android SDK提供了一个不需要密码的证书用于在debug模式下进行签名调试,默认存储在$HOME/.android/debug.keystore,但是release版本必须使用自己的数字签名证书。
________________________________________
查看应用签名信息
首先,为什么我们需要查看应用签名信息呢?
是因为,很多第三方提供的SDK服务为了区分应用必须让我们提供数字签名的SHA1值,例如百度地图定位SDK、高德地图定位SDK,为了使用这些服务,我们就必须学会如何查看应用签名信息。
________________________________________
查看自签名证书的信息
我们自签名的证书,由于keystore文件存在于我们可访问的路径下,我们可以直接通过keytool命令去查看证书信息。
示例命令如下:
keytool -v -list -keystore  my-release-key.keystore
1
1
输入命令后,是需要输入签名密码的。
参数详解:
-list:列出密钥库中的条目。
-keystore:数字证书位置。
示例截图如下: 
 
________________________________________
查看第三方应用或Android系统应用签名证书信息
其实系统应用对开发者来说也是第三方应用,但是只要我们能拿到它的apk,就能知道它的应用签名信息。以我目前使用的乐运动apk为例(com.oxygen.www_3.0_40.apk)。
1. 用unzip命令解压apk。
unzip com.oxygen.www_3.0_40.apk
1
1
1. 进入META-INF文件,找到其中的CERT.RSA文件。
2. 使用keytool工具进行信息查看,具体命令如下:
keytool -printcert -file CERT.RSA
1
1
参数详解:
-printcert:打印证书内容
示例截图如下: 
 

 
加密解密,数字签名及证书
标签: 解密
2016-12-12 16:43 1129人阅读 评论(0) 收藏 举报
  分类:
加密解密 android开发(28)  
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
对称加密
分类
1. 数据加密标准DES(56位密钥长度,密钥太短,抗穷举能力差,安全性不够)
2. 三重DES-DESede(112和168两种密钥长度,抗穷举能力显著增强, 但由于进行了多重des迭代,造成处理速度慢,效率不高)
3. 高级数据加密标准AES(128和192及256三种密钥长度,搞穷举能力强,速度比des系列加密快,为替代des系列加密算法而生)
对称加密步骤
1. 由消息传递双方约定密钥
2. 消息发送方使用密钥对明文加密,并将密文发送给接收方
3. 消息接收方使用密钥对密文解密获取明文
 
对称加密的问题
1. 甲与乙通信,甲乙事先需要打电话或者发邮件或者面对面约定密钥key1
2. 甲与丙通信,甲丙事先需要打电话或者发邮件或者面对面约定密钥key2
3. 甲与丁通信,甲丁事先需要打电话或者发邮件或者面对面约定密钥key3
如果甲要与N方通信,就得事先打电话或者发邮件或者面对面与N方约定N个密钥,以浏览器为例,其会与数不清的网站通信,浏览器开发者不可能事先打电话或者发邮件或者面对面与各个网站开发者约定密钥。
所以问题来了,通信两方该如何事先约定密钥呢,显然打电话或者发邮件或者面对面这种人工约定密钥的方式是不可行的,这时需要非对称加密算法来解决这个问题了。
非对称加密
分类
非对称加密算法也比较多,典型常用的有dsa,rsa算法
特点
1. 每个通信方都有一对密钥,公钥和私钥,公钥对外公开,私钥自己保存不对外公开
2. 公钥加密的数据必须用其对应的私钥才能解密,私钥加密的数据必须用其对应的公钥才能解密
非对称加密的这些特点,即可解决上述人工交换对称加密算法密钥的问题,具体见下图
加密流程
 
以上就是对数据加密的介绍,可以看到,数据加密可以保证纵使数据被敌人窃取,也无法识别出具体内容,达到数据的保密性。但假如窃取者将这个无法识别的数据替掉,换成具有误导性错误的数据发送给数据接收方,那么数据接收方该如何识别收到的数据是否真实的,没有被窜改的呢?如下图这种情况
 
要解决上面问题,需要利用数据摘要和签名对数据进行完整性验证及身份识别
数据摘要
定义
固名思义,就是取数据的摘要,大纲,特征码
分类
主要有md系列和sha系列算法 
1. md系列又分md2,md4,md5等,比较常用的就是md5,无论数据有多长,md算法都会生成一个128位的摘要,来表征这个数据。 
2. sha系列也分很多种,sha-0,sha-1,sha-2,sha-256等等,常用的是sha-1算法,其会对数据生成一个160位的摘要,来表征这个数据。
摘要算法验证数据完整性流程
1. 通信双方约定摘要算法
2. 数据发送方获取数据的摘要m,将数据和其摘要m一起发给接收方
3. 接收方取得获取的数据,并利用约定的摘要算法计算数据的摘要m2,与收到的摘要m比较,相等说明数据没有被更改
但上述验证其实是有bug的,见如下图 
 
如何解决bug了,这时需要用到mac算法
MAC消息认证码算法
MAC是结合了摘要和对称加密算法的摘要算法(个人认为也是一种签名算法,后面会看不到其不仅可以验证完整性还可以认证数据源),可以认为就是相比前的摘要算法多了一步,就是对摘要结果进行一次加密后的数据作为最终结果。
分类
主要有HmacMD5, HMacSHA1, HMacSH256, HMacSHA384等等,与前面的摘要算法都是对应的
mac消息认证算法验证数据完整性流程
1. 通信双方约定mac算法和密钥
2. 数据发送方获取数据的认证码m,将数据和其认证码m一起发给接收方
3. 接收方取得传来的数据,并利用约定的mac算法和密钥计算数据的认证码m2,与收到的认证码m比较,相等说明数据没有被更改
看上去与摘要验证流程相比没有差别,就多了一个密钥,但就是多的这个密钥,解决了前面摘要算法进行数据完整性验性的bug,具体见下图
 
另外从上图也可以看出,mac消息认证码不仅可以验证数据完整性,还可以认证数据发送方身份,因为mac所用的密钥只有通信双方才知道,截窃不知道这个key就无法生成正确的code,数据接收方就无法通过验证。当数据接收方一旦通过了验证,不仅说明数据是完整的,并且说明数据发送方没有被委造。
数字签名
什么是数字签名
数字签名可以认为是带密钥的数据摘要算法,并且这种密钥使用的是公钥和私钥,是数据摘要和非对称加密的结合体。类似手写签名,主要是用来验证数据完整性和认证数据来源。
其校验和认证流程分为以下几步: 
1. 消息发送方公布自己的公钥 
2. 消息发送方利用自己的私钥对数据签名得到签名值,并将数据和签名值一起发送给接收方 
3. 接收方利用发送方的公钥对数据和签名值进行验签
 
 
可见与上述消息认证码校验流程非常相似,并且可以知道签名时是私钥加密,公钥解密,与之前加密数据(交换密钥)时相反,那里是公钥加密,私钥解密
签名算法分类
主要包括RSA,DSA和ECDSA共三种算法
数字证书
回顾前面浏览器与银行通过非对称加密算法进行交互通信密钥的流程图
 
要解决这个问题用到数字证书
数字证书是什么
数字证书类似我们的身份证,用于标识通信方的身份,其本身就是一个格式规范的文件,如下图所示
 
其中最重要的信息有签发机构,签发机构签名,证书的持有者名称,证书持有者的公钥
证书每个人都可以制作,但需要到权威机构作认证,否则没有可信性。
有了证书,就不用担心假冒银行网站了,仍以前面例子为例,浏览器向银行请求公钥,其实应该是请求银行的证书(证书里有公钥),假设浏览器请求被劫持到一个假冒银行,浏览器收到假冒银行自己的制作的证书,浏览器发现这个没有被权威机构认证,不可信,就会中断通信,所以没安全问题。再假如假冒银行拿到真招行的数字证书返回给浏览器(这个可以拿到,证书是公开的,想拿都可以拿),浏览器通过验证,发现证书是真的,就用证书上的真招行的公钥加密通过密钥key返回给假冒银行,这时也没有问题,因为这个key是用真招行的公钥加密的,需要用真招行的私钥来解密,而假银行没有招行的私钥,无法解密,他得不到真实的通信密钥key,这也是安全的,密钥没有泄露。
前面一直说浏览器可以判断一个证书是经过权威机构认证了的还是自己制作的不可靠的证书,这是如何做到的呢?见下图
 
浏览器已经内置了这些权威证书认证机构的公钥,所以可以利用这些公钥来判断证书是不是那个权威机构认证过的。

签名证书VS加密证书
博客分类: 
PKI
数字证书 
从证书的用途来看,数字证书可以分为:
 签名证书:主要用于对用户信息进行签名,以保证信息的不可否认性。
 加密证书:主要用于对用户传送信息进行加密,以保证信息的真实性和完整性。
 
什么是加密证书和签名证书? 
       
    数字证书可分为签名证书和加密证书。


    签名证书主要用于对用户信息进行签名,以保证信息的有效性和不可否认性;


    加密证书主要用于对用户传送信息进行加密,以保证信息的保密性和完整性。


    每个证书都包含一对密钥即签名公钥和签名私钥,加密公钥和加密私钥,将签名证书和加密证书的公钥公布于外。


    签名时,用签名证书的私钥进行签名,其他用户可以利用公布于外网的签名公钥对签名进行验证。


    加密时,用户B利用用户A公布于外网的加密公钥对信息进行加密传送给用户A,用户A利用自己的加密私钥对加密后的信


    息进行解密得到完整的明文信息。
 
=================================================================
 
数字证书格式-摘要
 版本 :该证书使用的是哪种版本的X.509标准
 序列号:本项是CA分配给每一个证书的唯一的数字型编号,证书序列号的长度在不同的
  CA系统中是可配置的。
 签名算法:本项用来指定颁发机构CA签发证书时使用的签名算法
 颁发者:issuer 本项标识了颁发该证书的机构DN
 有效期:validity 本项是证书的有效期和终止日期
 主题:subject 证书拥有者的唯一是别名,这个字段必须是非空的。
     有效的DN(Distinct Name)标识:
       c          country code (一般是c=cn)
       o          organization(组织)
       ou        organizational unit name(组织单位名)
       cn        common name (普通名)
       e          email (邮件地址)
       l           locality name (地址)
       st         state, or province name (国家或省份名)
       dc        domain Component (领域)
       uid      user id (用户标识符)
       t          title (标题)
       sn        device serial number name
 公钥 public key: 本项用来标识公钥,公钥算法和公钥长度。
 微缩图算法:和证书本身没多大关系,就是哈希算法,通常用MD5或SHA1.
 微缩图:是指对整个证书进行hash运算之后生成的一段数据,就是对证书的哈希摘要。


android keystore相关
android要求所有的程序必须有签名,否则就不会安装该程序。在我们开发过程中,adt使用debug keystore,在 preference->android->buid中设置。debug的keystore默认有效期为一年,如果你是从一年前开始开发 android程序,那么很可能出现debug keystore过期,导致你无法生成 apk文件。我调了一下系统时间,就出现以下错误。此时你只要删除debug keystore就行,系统又会为你生成有效期为一年的私钥。
当debug keystore过期,会出现如下的错误:
Error generating final archive: Debug Certificate expired on…
debug keystore删除方法:
进入C:\Documents and Settings\Administrator\.android 删除路径下的debug.keystore及 ddms.cfg。
(不同环境下的目录可能略有不同,可在eclipse中查找此路径:Window->Preferences->Android->Build下 Default debug keystore)
然后重新导入即可。
ubuntu环境下的解决办法:  rm -rf  ~/.android/debug.keystore 


当你release时,你可以用 右击项目->android tools->export signed android package生成签名的包。再此过程中,如果你还没有你自己的私钥,adt会自动调用 keytool 来为你生成。请保护好你的私钥,否则被人盗用的话,就用攻击你的签名程序了。
release前还应注意版本号,在manifest.xml中有两个字段android:versionCode="1"和 android:versionName="1.0",其中前者是给程序或者android使用,以1递增。后者是给用户看的,在这里你就可以使用主版本 号 次版本号 build号等字符串。
---------------------------------------
keystore的生成:
cmd下:
进入到jdk的bin目录,这样的话,android.keystore文件就会生成在这个目录下,签名的时候我们需要这个文件
D:\Program Files\Java\jdk1.6.0_20\bin>keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
  [Unknown]:  qiaoling您的组织单位名称是什么?
  [Unknown]:  www.chinaandroid.com
您的组织名称是什么?
  [Unknown]:  www.chinaandroid.com
您所在的城市或区域名称是什么?
  [Unknown]:  haidian
您所在的州或省份名称是什么?
  [Unknown]:  BJ
该单位的两字母国家代码是什么
  [Unknown]:  86
CN=qiaoling, OU=www.chinaandroid.com, O=www.chinaandroid.com, L=haidian, ST=BJ, C=86 正确吗?
  [否]:  Y
输入<android.keystore>的主密码(如果和 keystore 密码相同,按回车):
其中参数-validity为证书有效天数,这里我们写的大些10000天。还有在输入密码时没有回显(尽管输就是啦) 并且 退格,tab等都属于密码内容,这个密码在给.apk文件签名的时候需要.
 
然后签名:
Eclipse中,右击需要签名的工程-->android tools-->export signed application package...
出现下面对话框,选择需要签名的工程
next,选择上面生成的android.keystore文件位置和设置的密码
next
next,选择签名生成文件的位置和名称




keykeytool错误: java.io.FileNotFoundException: android.key (Permission denied)
tool 在JDK的/bin目录下,比如:/opt/jdk/bin
用以下的命令生成一个证书:
keytool -genkey -alias android.key -keyalg RSA -validity 20000 -keystore android.key
老是报如题的错误:
后来才知道是因为当前的目录下没有写的权限,所以需要指定一个路径来存放android.key:
keytool -genkey -alias android.key -keyalg RSA -validity 20000 -keystore /<MY_PATH>/android.key
注: 该单位的两字母国家代码是什么(中国是 CN)
打包的时候如果出现: jarsigner: 找不到 android.key 的证书链。android.key 必须引用包含专用密钥和相应的公共密钥证书链的有效密钥库密钥条目。
那么可能是 -alias 部分多了路径名导致与其后面的keystore不同名。
查看证书信息:
keytool -list -v -keystore android.key -storepass <PSW>




keystore信息的查看
本文系转载,原文地址:http://dev.10086.cn/cmdn/bbs/thread-58334-1-1.html
 
keystore信息的查看:
keytool -list -v -keystore e:\keytool\yushan.keystore -storepass 123456
显示内容:
---------------------------------------------------------------------
Keystore 类型: JKS
Keystore 提供者: SUN


您的 keystore 包含 1 输入


别名名称: yushan
创建日期: 2009-7-29
项类型: PrivateKeyEntry
认证链长度: 1
认证 [1]:
所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
序列号:4a6f29ed
有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
证书指纹:
MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
签名算法名称:SHA1withRSA
版本: 3
--------------------------------------------------------------------


缺省情况下,-list 命令打印证书的 MD5 指纹。而如果指定了 -v 选项,将以可读格式打印证书,如果指定了 -rfc 选项,将以可打印的编码格式输出证书。




keytool -list -rfc -keystore e:\yushan.keystore -storepass 123456
显示:
-------------------------------------------------------------------------------------------------------
Keystore 类型: JKS
Keystore 提供者: SUN


您的 keystore 包含 1 输入


别名名称: yushan
创建日期: 2009-7-29
项类型: PrivateKeyEntry
认证链长度: 1
认证 [1]:
-----BEGIN CERTIFICATE-----
MIICSzCCAbSgAwIBAgIESm8p7TANBgkqhkiG9w0BAQUFADBqMQ8wDQYDVQQGDAbkuK3lm70xDzAN
BgNVBAgMBua5luWNlzEPMA0GA1UEBwwG5rmY5r2tMREwDwYDVQQKDAh4eOWNj+S8mjERMA8GA1UE
CwwIeHjlhazlj7gxDzANBgNVBAMTBnl1c2hhbjAeFw0wOTA3MjgxNjQwMTNaFw0xMDA3MjgxNjQw
MTNaMGoxDzANBgNVBAYMBuS4reWbvTEPMA0GA1UECAwG5rmW5Y2XMQ8wDQYDVQQHDAbmuZjmva0x
ETAPBgNVBAoMCHh45Y2P5LyaMREwDwYDVQQLDAh4eOWFrOWPuDEPMA0GA1UEAxMGeXVzaGFuMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJoru1RQczRzTnBWxefVNspQBykS220rS8Y/oX3mZa
hjL4wLfOURzUuxxuVQR2jx7QI+XKME+DHQj9r6aAcLBCi/T1jwF8mVYxtpRuTzE/6KEZdhowEe70
liWLVE+hytLBHZ03Zhwcd6q5HUMu27du3MPQvqiwzTY7MrwIvQQ8iQIDAQABMA0GCSqGSIb3DQEB
BQUAA4GBAGoQQ1/FnTfkpQh+Ni6h3fZdn3sR8ZzDMbOAIYVLAhBb85XDJ8QZTarHbZMJcIdHxAl1
i08ct3E8U87V9t8GZFWVC4BFg/+zeFEv76SFpVE56iX7P1jpsu78z0m69hHlds77VJTdyfMSvtXv
sYHP3fxfzx9WyhipBwd8VPK/NgEP
-----END CERTIFICATE-----
2、查看md5指纹验证
输入keytool -list -v -alias  android.keystore -keystore 再加上所要查看的keystore所在的路径
如: keytool -list -v -alias androiddebugkey -keystore d:\android.keystore,回车
-alias android.keystore 这个是别名
-keystore d:\android.keystore 具体位置的密钥库
要求输入密码,密码是android,至此就可以拿到MD5认证指纹了


keytool -genkeypair -keystore zrong2.p12 -storetype pkcs12 -validity 8050
keytool -list -keystore zrong2.p12 -storetype pkcs12 -v
二、使用p12证书为apk签名
将 p12 文件转成jks或者keystore文件就可以在ADT中使用了。
先创建一个空的 jks文件
1. keytool -genkey -alias anyname -keystore yourcertificate.jks
2. keytool -genkey -alias anyname -keystore yourcertificate.keystore
导入p12证书
1. keytool -importkeystore -srckeystore yourcertificate.p12 -srcstoretype PKCS12 -destkeystore yourcertificate.jks -deststoretype JKS
2. keytool -importkeystore -srckeystore yourcertificate.p12 -srcstoretype PKCS12 -destkeystore yourcertificate.keystore -deststoretype JKS
现在可以使用这个JKS文件了。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值