首页 > 编程知识 正文

keystore和私钥,查看jks文件信息

时间:2023-05-04 13:59:15 阅读:148132 作者:208

2019独角兽企业重金招聘Python工程师标准

一、 jks和. keystore的区别都用于打包,以保证APP的唯一性!

最大的不同在于:

keystore是Eclipse打包生成的签名。

jks是Android studio生成的签名!

备注:很多第三方市场在上传apk时只支持keystore。 必须将. jks签名转换为. keystore

二、在安卓中密钥生成和显示(扩展可定制) 2.1、标准密钥体系(StandardJDKkeystoretypes )包括若干形式: JCEKS、JKS、PKCS12。

区别: jceks :存储对称密钥(组密钥、私钥)

jks :只能存储非对称密钥对(私钥x509公钥证书)

pkcs12:RSA公司标准。 微软和java都支持。

2.2、安卓keystore生成方式第一:使用Eclipse或安卓studio生成步骤不在此详细介绍,感兴趣的朋友可以自行查找资料。

二是使用JDK下的keytool工具生成keytool。位于Javajdk1.8.0_144bin目录下。

首先安装jdk并设置环境变量,然后必须在命令窗口中使用以下命令:

keytool-genkey-alias Android.keystore-keyalg RSA-validity 20000-keystore Android.keystore返回并按顺序填写相关信息。

-genkey :生成文件-alias :别名(可定制)-keyalg (加密算法-validity )有效期-keystore (文件名).keystore作为后缀即可)

生成的文件位于运行命令的目录下。 您可以将此文件粘贴到android项目中,使用起来很方便。

2.3、命令显示keystore c : (users (xx keytool-list-v-keystorekotlin.keystore,显示的keystore可以是kotlin.jks ) )

2.4、责令修改keystore修改keystore密码:执行keytool-store passwd-keystorekotlin.keystore (要修改的keystore )后,输入当前密码、新

更改keystore别名: keytool-change alias-keystorekotlin.keystore (要更改别名的keystore )-alias my_name (旧别名)-destaliasaaandas

别名密码keytool-keypasswd-keystorekotlin.keystore (要更改的keystore )-alias androiddebugkey (别名)别名)

查看apk的keystore信息(由第三方APP应用程序或系统APP应用程序签名),将apk重命名为. rar文件,然后提取并找到META-INF目录。 在meta-INF文件夹下,右键单击shift单击此处打开命令窗口; 在命令行中输入。 keytool-printcert-file cert.RSA 2.5,android的缺省debug.keystore使用Android Studio运行或测试app。 它使用默认的debug.keystore签名。

2.5.1、缺省debug.keystore信息keystore名称:debug.keystore

别名:androiddebugkey

keystore密码:安卓

alias别名密码:安卓

2.6、扩展:如何测试是否正在使用apk创建的keystore的第一步: keytool-list-v-keystore XXX.keystore显示sha1的值。 步骤2 :用APP从代码中获取sha1的值,比较两者即可。 import Android.content.pm.package info; import Android.content.pm.package manager; import Android.content.pm.signature; import Java.io.bytearray inputstream; 导入jav

a.io.InputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; //这个是获取SHA1的方法 public static String getCertificateSHA1Fingerprint(Context context) { //获取包管理器 PackageManager pm = context.getPackageManager(); //获取当前要获取SHA1值的包名,也可以用其他的包名,但需要注意, //在用其他包名的前提是,此方法传递的参数Context应该是对应包的上下文。 String packageName = context.getPackageName(); //返回包括在包中的签名信息 int flags = PackageManager.GET_SIGNATURES; PackageInfo packageInfo = null; try { //获得包的所有内容信息类 packageInfo = pm.getPackageInfo(packageName, flags); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } //签名信息 Signature[] signatures = packageInfo.signatures; byte[] cert = signatures[0].toByteArray(); //将签名转换为字节数组流 InputStream input = new ByteArrayInputStream(cert); //证书工厂类,这个类实现了出厂合格证算法的功能 CertificateFactory cf = null; try { cf = CertificateFactory.getInstance("X509"); } catch (Exception e) { e.printStackTrace(); } //X509证书,X.509是一种非常通用的证书格式 X509Certificate c = null; try { c = (X509Certificate) cf.generateCertificate(input); } catch (Exception e) { e.printStackTrace(); } String hexString = null; try { //加密算法的类,这里的参数也可以是 MD4,MD5 等加密算法 MessageDigest md = MessageDigest.getInstance("SHA1"); //获得公钥 byte[] publicKey = md.digest(c.getEncoded()); //字节到十六进制的格式转换 hexString = byte2HexFormatted(publicKey); } catch (sydbd) { e1.printStackTrace(); } catch (CertificateEncodingException e) { e.printStackTrace(); } return hexString; } //这里是将获取到得编码进行16进制转换 private static String byte2HexFormatted(byte[] arr) { StringBuilder str = new StringBuilder(arr.length * 2); for (int i = 0; i < arr.length; i++) { String h = Integer.toHexString(arr[i]); int l = h.length(); if (l == 1) h = "0" + h; if (l > 2) h = h.substring(l - 2, l); str.append(h.toUpperCase()); if (i < (arr.length - 1)) str.append(':'); } return str.toString(); } 三、Android studio 中设置 keystore 第一步:在 工程gradle.properties 文件中 ##### KeystoreRELEASE_STORE_FILE=../kotlin.keystoreRELEASE_KEY_ALIAS=kotlinRELEASE_STORE_PASSWORD=123456RELEASE_KEY_PASSWORD=123456 第二步、在app的build.gradle 中 android { // 签名配置 signingConfigs { debug { storeFile file(RELEASE_STORE_FILE) storePassword RELEASE_STORE_PASSWORD keyAlias RELEASE_KEY_ALIAS keyPassword RELEASE_KEY_PASSWORD } release { storeFile file(RELEASE_STORE_FILE) storePassword RELEASE_STORE_PASSWORD keyAlias RELEASE_KEY_ALIAS keyPassword RELEASE_KEY_PASSWORD } } buildTypes { release { // 开启混淆 minifyEnabled true // 指定混淆配置文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } debug { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.debug } }}

备注: apk 安装时注意签名配置。

转载于:https://my.oschina.net/Agnes2017/blog/1824614

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。