这里我给你讲解一下步骤,然后你跟着步骤做一遍,应该就能产找到了
cmd ->
->cd android
->keytool -v -list -keystore debugkeystore
默认口令:android
密钥库类型: JKS
密钥库提供方: SUN
别名: androiddebugkey
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=Android Debug, O=Android, C=US
发布者: CN=Android Debug, O=Android, C=US
序列号: 54e62909
有效期开始日期: Mon Nov 23 09:43:59 CST 2017
截止期: Wed Nov 15 09:43:59 CST 2045
证书指纹:
MD5: E2:62:DD:9B:AA:6E:AC:B8:36:C0:ED:FA:B9:95:05:23
SHA1: 7B:38:AF:AA:48:69:F3:76:FD:6B:91:8B:5F:9D:8E:4F:90:63:AF:DD
SHA256: C6:26:86:71:F1:34:34:62:2D:B1:14:24:35:10:19:70:4E:14:32:2D:16:2F:28:BD:12:47:1F:57:4A:B7:C5:B3
签名算法名称: SHA256withRSA
版本: 3
扩展: #1: ObjectId: 252914 Criticality=false
查看应用签名的MD5、SHA1、SHA256值及签名算法。
查看keystore文件签名信息,前提要有keystore文件和密钥,才能够获取keystore文件的签名信息。
方法一:(适用于 AS)
1)打开 AS工具窗口栏右边的 Gradle -> Project -> app -> Tasks -> android -> signingReport,双击运行 signingReport;
在没有keystore文件和密钥的情况下,要想查看我们所需应用的签名信息,就需要借助 keytool 工具来完成。
首先解压要查看的apk包,通过数据证书管理工具 keytool 查看apk的签名信息。具体步骤如下:
1)将apk修改后缀为 rar 文件后进行解压;
2)进入解压后的 META-INF 目录,找到该目录下的 xxxRSA 文件;
3)通过命令 cmd 打开DOS窗口,输入命令 : keytool -printcert -file [RSA文件路径]
在查看应用签名信息过程中,可能会遇到以下几个问题:
定位 keytoolexe 工具所在的目录,使用相关 *** 作命令查看签名信息;
JKS(Java KeyStore) :是 Java 的 keytools 证书工具支持的证书私钥格式。jks 包含了公钥和私钥,可以通过 keytool 工具来将公钥和私钥导出。因为包含了私钥,所以 jks 文件通常通过一个密码来加以保护。一般用于 Java 或者 Tomcat 服务器。
PKCS #12 :定义了一种存档文件格式,用于实现存储许多加密对象在一个单独的文件中。通常用它来打包一个私钥及有关的 X509 证书,或者打包信任链的全部项目。
定位 keytoolexe 工具所在的目录,使用 *** 作命令转换证书格式;
JavaKeyStore的类型JKS和JCEKS是Java密钥库(KeyStore)的两种比较常见类型(我所知道的共有5种,JKS,JCEKS,PKCS12,BKS,UBER)。JKS的Provider是SUN,在每个版本的JDK中都有,JCEKS的Provider是SUNJCE,14后我们都能够直接使用它。JCEKS在安全级别上要比JKS强,使用的Provider是JCEKS(推荐),尤其在保护KeyStore中的私钥上(使用TripleDes)。PKCS#12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,也称为PFX文件,在windows中可以直接导入到密钥区,注意,PKCS#12的密钥库保护密码同时也用于保护Key。BKS来自BouncyCastleProvider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个bit都会产生错误),BKS能够跟JKS互 *** 作,读者可以用Keytool去TryTry。UBER比较特别,当密码是通过命令行提供的时候,它只能跟keytool交互。整个keystore是通过PBE/SHA1/Twofish加密,因此keystore能够防止被误改、察看以及校验。以前,SunJDK(提供者为SUN)允许你在不提供密码的情况下直接加载一个Keystore,类似cacerts,UBER不允许这种情况。证书导入Der/Cer证书导入:要从某个文件中导入某个证书,使用keytool工具的-import命令:1keytool-import-filemycertder-keystoremykeystorejks如果在-keystore选项中指定了一个并不存在的密钥仓库,则该密钥仓库将被创建。如果不指定-keystore选项,则缺省密钥仓库将是宿主目录中名为keystore的文件。如果该文件并不存在,则它将被创建。创建密钥仓库时会要求输入访问口令,以后需要使用此口令来访问。可使用-list命令来查看密钥仓库里的内容:1keytool-list-rfc-keystoremykeystorejksP12格式证书导入:keytool无法直接导入PKCS12文件。第一种方法是使用IE将pfx证书导入,再导出为cert格式文件。使用上面介绍的方法将其导入到密钥仓库中。这样的话仓库里面只包含了证书信息,没有私钥内容。第二种方法是将pfx文件导入到IE浏览器中,再导出为pfx文件。新生成的pfx不能被导入到keystore中,报错:keytool错误:javalangException:所输入的不是一个X509认证。新生成的pfx文件可以被当作keystore使用。但会报个错误asunknownattr136141311171,查了下资料,说IE导出的就会这样,使用Netscape就不会有这个错误第三种方法是将pfx文件当作一个keystore使用。但是通过微软的证书管理控制台生成的pfx文件不能直接使用。keytool不认此格式,报keytool错误:javaioIOException:failedtodecryptsafecontentsentry。需要通过OpenSSL转换一下:1opensslpkcs12-inmycertspfx-outmycertspem2opensslpkcs12-export-inmycertspem-outmykeystorep12通过keytool的-list命令可检查下密钥仓库中的内容:1keytool-rfc-list-keystoremykeystorep12-storetypepkcs12这里需要指明仓库类型为pkcs12,因为缺省的类型为jks。这样此密钥仓库就即包含证书信息也包含私钥信息。P7B格式证书导入:keytool无法直接导入p7b文件。需要将证书链RootServerp7b(包含根证书)导出为根rootcacer和子rootcaservercer。将这两个证书导入到可信任的密钥仓库中。1keytool-import-aliasrootca-trustcacerts-filerootcacer-keystoretestkeytrustjks遇到是否信任该证书提示时,输入y1keytool-import-aliasrootcaserver-trustcacerts-filerootcaservercer-keystoretestkeytrustjks总结P12格式的证书是不能使用keytool工具导入到keystore中的TheSun'sPKCS12Keystore对从IE和其他的windows程序生成的pfx格式的证书支持不太好P7B证书链不能直接导入到keystore,需要将里面的证书导出成cer格式,再分别导入到keystore。
第一种方法,使用keytool
首先我们得在系统的环境变量中配置下keytool,keytool是位于我们JDK安装的bin目录下,如下图
在环境变量中配置一下path,如下图
然后进入到通过cmd打开控制台,进入cmd定位到Android文件夹下。如下图:
输入keytool -list -v -keystore debugkeystore得到三种指纹证书,选取SHA1类型的证书,密匙口令是android,就可以获取到MD5和SHA1(注意如果不输入-v的话就只会出现SHA1的值),如下图:
这里就拿到了调试用的MD5和SHA1值,如果对命令使用不会的情况可以使用keytool查看使用帮助的指令。
第二种方法,使用AS中的Terminal
AndroidStudio中自带了终端Terminal,我们可以直接在里面进行 *** 作。如下图:
在这里首先得进入到C盘的,用户的android路径下。其它 *** 作同第一个种方法一样,如下:
当然在这里我们只是获取的调试用的MD5和SHA1
获取apk中的MD5和SHA1,前提是你知道密匙
首先先解压apk,获取到其中的META-INF文件夹底下的CERTRSA。如下图:(这里的是解压在D盘的测试文件夹下)
用指令keytool -printcert -file D:\testtool\META-INF\CERTRSA进行解析。如下图:
如果你有keystore的话,想获取MD5和SHA1的话,用法前面有介绍,如下图:
好了到这里就结束了,在实际开发中为了避免注册时弄错签名,建议时打包后在获取apk的签名
网上度娘一堆 都是摘抄……重点是每个都有错的。。。也是醉了
那就整理一下,废话不多说,开撸
这个没得说 快捷键win+r cmd 打开命令行界面,输入 java -version查询是否按照jdk 没有安装自己去 度娘 这个不解释了
进入到需要生成jks的文件夹 本文在 E:\cert 目录下生成
①、命名 shift+鼠标右键 在此处打开命令行窗口
②、 执行命令 keytool -genkeypair -alias demo -keyalg RSA -keypass 123789 -storepass 123789 -keyalg RSA -keysize 2048 -validity 3650 -keystore demojks
参数说明:
storepass keystore 文件存储密码
keypass 私钥加解密密码
PS: 上面两个密码要一致
keyalt 采用公钥算法,默认是DSA
validity 有效期 单位是天
keysize 密钥长度(DSA算法对应的默认算法是sha1withDSA,不支持2048长度,此时需指定RSA)
keystore 指定keystore文件 如上面命令中demojks
③、如上图 按提示输入你的信息 最后输入y 确认即可;
④、转换为行业标准格式 输入 keytool -importkeystore -srckeystore demojks -destkeystore demojks -deststoretype pkcs12
keytool -list -keystore demojks -v
根据提示输入命令
执行命令 keytool -alias demo -exportcert -keystore demojks -file democer
输入密码即可
双击证书 查看
基本上到这一步已经完成本文的内容,以下是补充以及踩坑
jks文件中的私钥不能直接得到,需要通过openssl将jks文件转换成pkcs12格式后再进行提取
执行命令 keytool -v -importkeystore -srckeystore demojks -srcstoretype jks -srcstorepass 123789 -destkeystore demopfx -deststoretype pkcs12 -deststorepass 876543210 -destkeypass 12345678
执行如下命令便可以将demopfx的私钥导出:
openssl pkcs12 -in demopfx -nocerts -nodes -out demokey
输入密码打开即可
执行命令 keytool -list -rfc -keystore demojks -storepass 123789
查询了很多资料 人笨没有找到合适办法。。。。 哪位大佬知道了告知下 感激不尽
贴上链接
>
jks转为p12,然后再将p12转为pem
AndroidStudio使用keystore文件对APK进行签名,但快应用中要求使用PEM文件对RPK进行签名。
现有demojks,证书密码为demopwd,转换成pem之后依然使用demopwd作为密码。
提取公钥:
切换到jks证书的存储路径,执行如下命令:keytool -list -rfc -keystore demojks -storepass demopwd
如果出现下图的错误提示:
那么请把demojks文件拷贝到与keytoolexe文件同目录下,keytool在jdk的bin目录下,拷贝之后cmd切换到bin目录重新执行刚才的命令
然后就能在命令行中看到打印的公钥内容(也即Certificate),如下图
提取私钥:
jks文件中的私钥不能直接得到,需要通过openssl将jks文件转换成pkcs12格式后再进行提取。
执行如下命令将demojks文件转换成demopfx文件:
keytool -v -importkeystore -srckeystore demojks -srcstoretype jks -srcstorepass demopwd -destkeystore demopfx -deststoretype pkcs12 -deststorepass demopwd -destkeypass demopwd
命令执行完成后目录下就会多了一个demopfx文件。
然后,执行如下命令便可以将demopfx的私钥导出:
openssl pkcs12 -in demopfx -nocerts -nodes -out demokey
输入密码后会生成一个demokey文件,打开查看内容
这个坑估计很多人才过,特此记录一下,希望下个人能顺利脱坑
1所谓发布版,就是release的版本
2调试版就是debug版本
sha1值的计算是根据jks生成的签名得来的,这里注意第一坑出现了
1创建jks的问题
看到了吧,这个坑一定要注意,如果你在生成的时候填写的是debug版本,那么生成的sha1值就填写在调试版本里,你生成的是release版本,那么生成的sha1值填写在发布版本里,这是个坑,注意
如果你生成的是debug的,就写debug,如果是release就填写release版本
然后再buildgradle中写这个配置
debug就配置debug,release就配置release
然后就是运行的时候切换
问题:工程代码显示:找不到jar包
解答:将百度地图jar包复制到工程目录下的libs的同时,还需要add as library,同时在src/main/下新建一个文件夹,用于存放so文件
问题:No implementation found for long combaiduplatformcomjnimapcommonmemcacheJNICommonMemCacheCreate
解答:请在src/main/下新建一个文件夹,用于存放so文件,并且需要将v8a、v7a和abi文件夹都复制进去
问题:SHA1的获取
解答:请参考上文
问题:Failure [INSTALL_FAILED_NO_MATCHING_ABIS]
解答:虚拟设备要选择 arm或者直接打包安装到手机上看效果吧
问题:只显示网格,没有地图
解答:(1)没有网络;(2)签名(SHA1)、包名、API key等其中任意一项设置不正确;3)AndroidManifest中的配置的不正确:比如API权限、API_KEY、以及uses-permission、meta-data的位置等等
以上就是关于mac android studio 怎么查找 sha1全部的内容,包括:mac android studio 怎么查找 sha1、Android查看应用签名方法、java中怎么获取jks证书文件中的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)