Android代码查看sha1值
-
SHA1
编辑
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要,(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略)。
术语和概念
编辑
位,字节和字
运算符和符号
SHA1算法描述
编辑
补位
补长度
使用的常量
使用的函数
计算消息摘要
在安卓开发的过程中,我们通常都可能要用到sha1,比如,在申请第三方开发的过程中,比如高德地图sdk,百度地图sdk...,获取第三方专属的key,都需要sha1,那么,如何获取签名的sha1值了,这里我简要列举俩种方式,一种是通过代码获取,另一种是通过签名工具keystore来获取。
方式一:代码方式,直接上代码。
public class Sha1Utils {//这个是获取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 (NoSuchAlgorithmException e1) {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(); } }
通过,调用以上的工具类,可以得到我们当前应用的sha1
方式二:签名工具查看
在开发每一个应用的时候,我们都需要对应用前行签名,如何签名,这里不做纤细说明,就是利用keystory文件生成对应的签名证书。
第一步:cd到签名文件目录下
第二步:执行 keytool -list -v –keystore“签名文件”命令
第三步:直接回车,输入秘钥即可,通常,秘钥是签名文件的key_pass.
成功后,会看见下面的提示:
CA:E4:0D:47:15:F9:FD:CC:5A:F0:F5:F6:B1:AD:3E:FD:2B:4B:C8:FE
Android代码查看sha1值相关推荐
- linux系统下idea打包apk教程,intellij idea14打包apk文件和查看sha1值
"深入浅出,人人都是程序员" 开发过android手机的同学都知道在eclipse中可以直接查找到SHA1值,但是使用intellij idea的同学则找不到SHA1值,所以就有了 ...
- Android studio 查看sha1
高德地图开发申请KEY的时候需要开发者提供SHA1证书指纹数据,在eclipse很容易就找到了,但是Android Studio很久也没找到,只能使用在网上看到的方法了,在Android Studio ...
- android studio 获取SHA1值 MD5值
运行CMD 输入 cd .android 回车 输入 keytool -list -v -keystore D:/yohoo.keystore -storepass android 回车 D:/y ...
- android 签名文件与sha1获取
签名与sha1 获取 1.签名作用: 一个Android项目可以以它的包名作为唯一标识符,但是手机上的应用可能不止这一个应用,如果手机上有两个应用恰好使用了同一个包名,那么其中一个应用程序就会覆盖另一 ...
- 转载记录:android 手动生成jks及查看jks的SHA1值
在Android studio 的Terminal里操作输入 1.手动生成.jks文件 keytool -genkey -alias test -keypass 123456 -keyalg RSA ...
- 《Android studio 创建生成keystore SHA1值的申请 高德地图key值申请 android studio 打包生成apk》
开发背景:目前做车载项目,领导要求用高德地图.整理了一下,差不多就是下面的目录: 一.创建生成keystore: 二.SHA1值的申请: 三.高德地图key值申请: 四.android studio ...
- android 开发工具—AndroidStudio获取SHA1值
文章链接:http://crazyandcoder.github.io/ github: https://github.com/crazyandcoder 在使用高德地图时,申请key需要用到apk的 ...
- Android获取SHA1值
前言 获取SHA1.256值是老生常谈问题,当我们需要用到百度地图等三方技术时,需要我们提供相关信息用以注册,目前关于如何获取SHA1.256网上有很多帖子,我也再写一遍,末尾会新增一个傻瓜式方法 一 ...
- Android输出签名的 SHA1 值
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/105341708 本文出自[赵彦军的博客] 方式一:使用 gradle 命令 ./g ...
最新文章
- 揭秘深度强化学习的研究哲学:乐观主义与悲观主义
- python计算出nan_python如何进行汇总统计?
- 第二阶段个人博客总结8
- JDBC 程序的常见错误及调试方法
- linux获取ip地址的接口,获取Linux上接口的IP地址
- hive中导入text文件遇到的坑
- 马尔科夫过程与吉布斯采样
- jQuery-ui源代码重点难点分析
- 【python、pyqt5】,打包出现的若干问题
- 【Scratch案例实操】scratch大鱼吃小鱼(完整详案) scratch编程案例教学 scratch创意编程 少儿编程教案
- 统计学中抽样调查和一些常用的方法
- OpenGL(十三) Alpha测试、剪裁测试
- ML Hyperlink
- fiddler+LR11录制脚本
- 如何将谷歌卫星地图转成80坐标并测量面积
- IS-IS LSDB详解(华为设备)
- FireBox与Chrome,FireBox 对代码执行严格
- springboot手写JDBC面对2000并发量毫无压力
- 狂神redis笔记_狂神说redis笔记(三)
- PR时间轴模板 企业发展融资历程PR动态图形模板MOGRT
热门文章
- ​2019年最新 BAT 美团头条面试题目及答案汇总
- 怎么看电脑能不能升级win10系统|检测电脑适不适合安装win10的方法
- linux TUN 虚拟网卡设备
- 运用Parcelable将类序列化并绑定给Intent
- Hadoop1.0.4单节点StandAlone及Pseudo-Distributed部署方法
- 中国的房子其实是不断贬值的
- python基本数据类型第三周_python3第二天(基本数据类型)
- 小红书被曝裁员 先从试用期员工开始
- 国家邮政局:前10月邮政行业业务收入同比增长17.8%
- SK海力士收购英特尔NAND闪存业务已获韩国公平贸易委员会批准