1.啥是sha码?
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。该算法经过加密专家多年来的发展和改进已日益完善,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说是对明文的一种“指纹”或是“摘要”所以对散列值的数字签名就可以视为对此明文的数字签名。
2.如何获取sha1码?
在eclipse中获取sha1码
如果你是用的eclipse在开发,那么获取sha1码还是比较简单的。直接:winows -> preferance -> android -> build。(我的eclipse卸载了,所以借用网友的图)
eclipse中获取在Android Studio中获取sha1码
最近开发,在集成高德地图的时候用到了sha1码。我就用我获取的过程举例,这样可能更加直观,大家也能马上用到。
申请高德地图的Key的时候分别需要调试模式下的sha1码和发布模式下的sha1码。
获取调试模式下的sha1码:
其实,如果你仔细看高德官方文档,文档中是告诉你如何获取sha1码的,而且有多种方法。这里我只说如何通过命令行获取。以及获取过程中的一些小坑。
打开dos窗口,按照官方提供的方法输入keytool -list -v -keystore debug.keystore
这时你可能遇见第一个坑,提示你keytool 不是内部命令也不是可运行程序。
这个是因为keytool是java命令,如果你没有将
C:\Program Files\Java\jdk1.7.0_67\bin
加入到path中是无法使用该命令的。如果不想添加到path中,你也可以切换到该目录下再使用keytool命令。
成功添加或切换后,你继续使用keytool -list -v -keystore debug.keystore
命令,你就会掉到第二个坑当中,提示你秘钥库文件不存在。
这里的秘钥库文件就是指的
debug.keystore
,它在哪呢?一般我们默认生成的位置在c:\users\Administrator\.android\debug.keystore
。所以上面的命令可以修改为:keytool -list -v -keystore c:\users\Administrator\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android
- -alias为别名,一般默认为androiddebugkey
- -storepass和-keypass都是密码,一般都是默认为android
如果你发现没有debug.keystore
文件,那你就得自己生成一个了,具体生成问某度。
调试模式
经过以上步骤,你已经拿到了调试模式下的sha1码了,但是我们正式发布我们的项目的时候sha1码是不一样的。
要想获取发布版的sha1码你得有自己的keystore。在Android Studio中你可以方便的创建自己的keystore。步骤:点击工具栏 Build --> generate singed apk,填写相关信息, 按步骤生成自己的keystore。
然候在命令行中输入:keytool -list -v -keystore E:\{yourpath}\keystore\app.jks -alias app -storepass mima -keypass mima
- -alias 别名,就是你生成keystore时填写的别名,我这里填写的是app
- mima 就是是你自己设置的密码,填写正确就可以
如果你都填写正确,就会得到与上图类似的窗口,你可以看到你发布模式下的sha1码了,这里我就不再截图了。
有时候还需要获取应用的签名,同样是使用上面的命令,获取到的MD5就是你的应用签名。
网友评论