#推荐
Android开发中如何快速获取应用的SHA1签名(附详细代码教程)

2023-03-28 11,671

在日常开发Android应用时,尤其是接入一些第三方服务(例如地图、支付或推送)的时候,经常需要用到sha1值来进行应用签名的认证。本文将详细地教你如何获取Android应用的SHA1值,并附上具体代码,让你一步到位。

Android开发中如何快速获取应用的SHA1签名(附详细代码教程)什么是SHA1值?

SHA1是一种哈希算法生成的密钥签名,在Android开发中主要用于验证应用的唯一性,尤其在注册第三方SDK时,这个签名至关重要。

如何获取SHA1值?

方法一:使用命令行(推荐)

打开终端,执行如下命令:

keytool -list -v -keystore ~/.android/debug.keystore

运行后系统会要求输入密码,默认密码是:android

输出结果示例:

别名: androiddebugkey
创建日期: 2025-03-28
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: C=US, O=Android, CN=Android Debug
发布者: C=US, O=Android, CN=Android Debug
序列号: 12345678
有效期从: Thu Mar 28 08:00:00 CST 2025 到: Sat Mar 20 08:00:00 CST 2050
证书指纹:
	 SHA1: AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD

上面的SHA1值就是我们要用到的。

方法二:Android Studio直接查看

在Android Studio里打开你的项目,按照下面路径操作:

Gradle菜单 -> Tasks -> android -> signingReport

双击执行signingReport任务,即可在控制台看到SHA1值。

方法三:代码动态获取

有时候,我们可能需要通过代码来动态地获取应用的SHA1值,以下给出详细实现方式:

Java代码示例:

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import Java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SHA1Utils {
    public static String getSHA1(Context context) {
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo(
                    context.getPackageName(), PackageManager.GET_SIGNATURES);
            Signature[] signatures = info.signatures;
            MessageDigest md = MessageDigest.getInstance("SHA1");
            md.update(signatures[0].toByteArray());
            byte[] digest = md.digest();
            return bytesToHexString(digest);
        } catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }

    private static String bytesToHexString(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            sb.append(String.format("%02X:", b));
        }
        if (sb.length() > 0) {
            sb.deleteCharAt(sb.length() - 1); // 删除最后的冒号
        }
        return sb.toString();
    }
}

使用示例:

String sha1 = SHA1Utils.getSHA1(getapplicationContext());
Log.d("SHA1", "应用SHA1值为:" + sha1);

以上方法可以方便你在开发中迅速获取SHA1签名值,推荐使用第一种方式或第二种方式进行调试时查看,而使用代码获取则适用于线上环境或者动态验证。

希望本文能帮助到大家,开发顺利!

 

收藏 打赏

感谢您的支持,我会继续努力的!

打开USDT(trc-20)扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

Ts:本站所有内容均为互联网收集整理和网友上传。仅限于学习研究,请必须在24小时内删除。否则由此引发的法律纠纷及连带责任本站概不承担。

如侵犯到您的合法权益,请联系我们删除侵权资源!

韩仔技术 实用工具 Android开发中如何快速获取应用的SHA1签名(附详细代码教程) https://www.hanzijs.com/gongju/6102.html

相关文章

发表评论
暂无评论