android 打造万能keyStore

概述:总所周知,我们在打包我们APK到应用市场的时候,出于安全和设置三方接入(微信、ShareSDK、地图)的唯一识别SHA1值,必须生成一个唯一的keyStore,来保证我们开发项目的安全性、唯一性、可控性。
缘由:在我们开发中涉及到使用第三方的这些资源时,申请key的时候需要提供apk然后根据某种算法生成一个唯一MD5,设想下有没有遇到这样的情况 应用没签名前这些三方(分享、支付、地图、IM)都可以调用,但我签名之后为什么调用不起了?这种情况对于初学者是一个百思不得其解的问题,原因在于没有使用签名之前的apk和使用了签名之后的apk生成的SHA1值是不一样的,而三方的接入是根绝唯一性的SHA1值去准确的判断是由那个应用调起的。所以会导致这样的问题
常见做法:有些聪明的哥们会这样弄,那我就debug签名和single签名各来一套,我来回切换。这….这当然可以,但是这样会很麻烦,假如我们开发的项目是多人开发,这样势必会导致一些问题。
万能打造:在和大家分享这样的一种小技巧之前,有必要清楚一点点关于android默认签名 debugkey

Android默认签名文件debug.keystore的keystore密码、alias、alias密码分别是:

keystore密码:android
alias:androiddebugkey
alias密码:android
而debugkey据了解 只有这三个信息

必读原理:聪明的哥们已经猜到了,没错,我就把更改debugkeystore,把我们正式的签名文件的keystore密码、alias、alias密码都修改成与Android默认签名debug.keystore的相同,并且在Eclipse、AndroidStudio中指定我们默认debug签名文件路径,此时当我们直接运行项目时ide将直接用我们指定的这个签名文件,此时我们debug时的签名和正式发布的签名一致了,所以在调试的时候什么微信、第三方支付都不存在签名错误等云云。
步骤

提醒:修改签名文件密码、alias、alias密码相当于破坏了这个文件,所以我们修改的时候一定要copy一个签名文件出来,然后修改这个copy出来的文件的上述三个属性。
1.找到你的keystore文件 ,就是你创建的那个keystore签名文件,假如我的叫 keystore.jks。
这里写图片描述

2.打开命令行,进入你的keystore所在的文件夹 windows—快捷键—> :cmd
进入文件夹快捷键–>: cd e:\Li_work_splace1xx\xxxx
假如我的keystore在桌面某个文件夹
这里写图片描述
这里写图片描述

3.修改keystore密码,在命令行输入:
keytool -storepasswd -keystore keystore.jks
其中keystore.jks 是签名文件的全名,回车后会提示输入证书的当前密码,然后要求输入新密码、重复输入新密码。当前密码当然只有你知道了,新密和重复密码按照开头讲的,必须输入android(第一个是初始密码,你自己知道,后面的输入的密码改成android )。
这里写图片描述

4.修改keystore的alias,在命令行输入:
什么是alias–> 别名 如下:
这里写图片描述
输入命令:keytool -changealias -keystore keystore.jks -alias dance(换成你的) -destalias androiddebugkey
其中keystore.jks是签名文件的全名,dance是证书中当前的alias的名字,-destalias后面跟的是要修改成的alias的名字,按照开头说的,这里必须改为androiddebugkey;比如我的alias的名字是dance,那么我的完整的命令就是:
keytool -changealias -keystore keystore.jks -alias dance -destalias androiddebugkey
回车后会提示输入keystore的密码(上面已经修改为android)和当前alias的密码(这个只有你知道)。
这里写图片描述
5 修改alias的密码,在命令行输入:
keytool -keypasswd -keystore keystore.jks -alias androiddebugkey
其中keystore.jks是签名文件的全名,回车后会提示输入keystore密码(上面已经修改为android),alias密码(这个只有你知道),然后提示输入新alias密码,按照开头讲的,必须输入android。
这里写图片描述

到这里修改alias属性的操作全部完成,接下来在Eclipse和AndroidStuio中配置默认的debug keystore为我们修改属性后的这个keystore

AndroidStudio

如果你用的是AndroidStudio,首先我们把之前的修改之前的keystore和修改过的debug keystore都拷贝一份到项目根目录。

然后需要在项目的app module下的gralde文件做配置:

android {

defaultConfig {
    applicationId ...
    ...
}

signingConfigs {
    // debug时的默认签名配置,这里的密码等信息是刚我们修改后的。
    debug {
        storeFile  file("../dance_keystore_debug_keystore.jks")
         // 刚修改过的默认debug keystore路径。
        storePassword 'android' // 默认debug keystore的密码。
        keyAlias 'androiddebugkey' // 默认debug keystore的alias。
        keyPassword 'android' // 默认debug keystore的alias的密码。
    }

    // 和上面相同,不过是正式文件的路径和密码,我用*代替了。
    release {
            storeFile  file("../dance_keystore_single_keystore.jks")
         // 刚修改过的默认debug keystore路径。
        storePassword ***
        keyAlias ***
        keyPassword ***
    }
}

buildTypes {
    ...
}

}

这里写图片描述

本博客基于 http://blog.yanzhenjie.com 感谢作者分享的好方法
到此更改打造万能keystore就结束了大家不妨试一试~,下篇准备和大家分享下andoirdstudio 中如何查看当前签名文件的配置信息 (MD5 SHA1)值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android SM2、SM3、SM4 算法支持 Service Provider 及证书制作软件包 国密算法 JCAJCE Service Provider,适应版本 Android 4.2.2~7.0 支持 SM2 的 KeyFactory、KeyPairGenerator、Cipher、Signature、X.509 CertificateFactory 接口 支持 SM3 的 MessageDigest 接口、SM3withSM2 混合算法 支持 SM4 的 Cipher、KeyFactory、KeyGenerator、SecretKey 接口、相关算法 CMAC-SM4、Poly1305-SM4 增加 java.security.PublicKey 的子类 SM2PublicKey 增加 java.security.PrivateKey 的子类 SM2PrivateKey 全功能支持 SM3withSM2 算法的 X.509 证书结构体解释与密码运算 支持 BKS、PKCS#12 KeyStore 生成、解释、验算 X.509v1/v3 证书,签名算法支持 SM3withSM2、主流 RSA、DSA、ECDSA.... 生成、解释、验算 PKCS#10 证书申请,签名算法支持 SM3withSM2、主流 RSA、DSA、ECDSA.... *** 无须打包 BouncyCastle 支持库,体积小、节约内存 *** 请参阅 testSM.java、testCERT.java 文件列表: 1、AndroidSM.jar -- SM2、SM3、SM4 算法/证书支持的 JCA/JCE Service Provider 类库 2、AndroidCRT.jar -- X.509 数字证书/PKCS#10 证书申请相关类库 3、bc422.jar -- BouncyCastle 加密库,Android 4.2.2 内置版本(由真机导出dex文件转换而得,仅用于编译时选用,勿打包到apk文件中) 4、testSM.java -- SM2、SM3、SM4 算法相关类引用范例 5、testCERT.java -- X.509 数字证书/PKCS#10 证书申请相关类引用范例 6、readme.txt -- 本文 因条件及精力限制,各类、方法的实现未经严格彻底的测试,不宜用于商业用途软件的开发。 如欲将本开发包发布、上传、拷贝、共享等,务必保持其内容完整性(包括本文) 如有需要帮助或者索取源码,请联系 suntongo@qq.com, suntongo@hotmail.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值