Android打包时签名文件keystore的MD5值

这篇具有很好参考价值的文章主要介绍了Android打包时签名文件keystore的MD5值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

些SDK提供方需要我们提供打包APK时使用的包名和签名文件(xxxxxx.jks这个文件)MD5值,然后SDK服务端应该会进行比对保证商户调用的合法性。不然光靠包名是可以伪造的,怎么获取签名文件的MD5值?

方法一:

原先通过命令keytool -list -v -keystore test.jks 可以查看md5值,但是发现现在查看不了,只有SHA1和SHA256的

android 应用签名md5,android,android studio,gradle

方法二:改成从androidstudio查看

在app的build.gradle中配置你们签名文件,怎么生成签名文件?

build-->Generate signed bundle\APK-->next -->Create  new

 android 应用签名md5,android,android studio,gradle

android{

signingConfigs {
    release {
        keyAlias 'test'
        storePassword '666666'
        keyPassword '666666'
        storeFile file('E:\\test.jks')
    }
    debug {
        keyAlias 'test'
        storePassword '666666'
        keyPassword '666666'
        storeFile file('E:\\test.jks')
    }
}
}

右侧gradle Tasks里面双击signingReport就可以查看签名文件的MD5值了
 

 android 应用签名md5,android,android studio,gradle

获取后去掉 :

方法三:从PackageInfo类中获取

package com.chinapay.umsfacesdkdemo.utils;
 
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.util.Log;
 
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.HashMap;
 
 
/**
 * 获取签名工具类
 */
public class AppSigning {
    public final static String MD5 = "MD5";
    public final static String SHA1 = "SHA1";
    public final static String SHA256 = "SHA256";
    private static HashMap<String, ArrayList<String>> mSignMap = new HashMap<>();
 
    /**
     * 返回一个签名的对应类型的字符串
     *
     * @param context
     * @param type
     * @return 因为一个安装包可以被多个签名文件签名,所以返回一个签名信息的list
     */
    public static ArrayList<String> getSignInfo(Context context, String type) {
        if (context == null || type == null) {
            return null;
        }
        String packageName = context.getPackageName();
        if (packageName == null) {
            return null;
        }
        if (mSignMap.get(type) != null) {
            return mSignMap.get(type);
        }
        ArrayList<String> mList = new ArrayList<String>();
        try {
            Signature[] signs = getSignatures(context, packageName);
            for (Signature sig : signs) {
                String tmp = "error!";
                if (MD5.equals(type)) {
                    tmp = getSignatureByteString(sig, MD5);
                } else if (SHA1.equals(type)) {
                    tmp = getSignatureByteString(sig, SHA1);
                } else if (SHA256.equals(type)) {
                    tmp = getSignatureByteString(sig, SHA256);
                }
                mList.add(tmp);
            }
        } catch (Exception e) {
            Log.e("e", e.getMessage());
        }
        mSignMap.put(type, mList);
        return mList;
    }
 
    /**
     * 获取签名sha1值
     *
     * @param context
     * @return
     */
    public static String getSha1(Context context) {
        String res = "";
        ArrayList<String> mlist = getSignInfo(context, SHA1);
        if (mlist != null && mlist.size() != 0) {
            res = mlist.get(0);
        }
        return res;
    }
 
    /**
     * 获取签名MD5值
     *
     * @param context
     * @return
     */
    public static String getMD5(Context context) {
        String res = "";
        ArrayList<String> mlist = getSignInfo(context, MD5);
        if (mlist != null && mlist.size() != 0) {
            res = mlist.get(0);
        }
        return res;
    }
 
    /**
     * 获取签名SHA256值
     *
     * @param context
     * @return
     */
    public static String getSHA256(Context context) {
        String res = "";
        ArrayList<String> mlist = getSignInfo(context, SHA256);
        if (mlist != null && mlist.size() != 0) {
            res = mlist.get(0);
        }
        return res;
    }
 
    /**
     * 返回对应包的签名信息
     *
     * @param context
     * @param packageName
     * @return
     */
    private static Signature[] getSignatures(Context context, String packageName) {
        PackageInfo packageInfo = null;
        try {
            packageInfo = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
            return packageInfo.signatures;
        } catch (Exception e) {
            Log.e("e", e.toString());
        }
        return null;
    }
 
    /**
     * 获取相应的类型的字符串(把签名的byte[]信息转换成16进制)
     *
     * @param sig
     * @param type
     * @return
     */
    private static String getSignatureString(Signature sig, String type) {
        byte[] hexBytes = sig.toByteArray();
        String fingerprint = "error!";
        try {
            MessageDigest digest = MessageDigest.getInstance(type);
            if (digest != null) {
                byte[] digestBytes = digest.digest(hexBytes);
                StringBuilder sb = new StringBuilder();
                for (byte digestByte : digestBytes) {
                    sb.append((Integer.toHexString((digestByte & 0xFF) | 0x100)).substring(1, 3));
                }
                fingerprint = sb.toString();
            }
        } catch (Exception e) {
            Log.e("e", e.toString());
 
        }
 
        return fingerprint;
    }
 
    /**
     * 获取相应的类型的字符串(把签名的byte[]信息转换成 95:F4:D4:FG 这样的字符串形式)
     *
     * @param sig
     * @param type
     * @return
     */
    private static String getSignatureByteString(Signature sig, String type) {
        byte[] hexBytes = sig.toByteArray();
        String fingerprint = "error!";
        try {
            MessageDigest digest = MessageDigest.getInstance(type);
            if (digest != null) {
                byte[] digestBytes = digest.digest(hexBytes);
                StringBuilder sb = new StringBuilder();
                for (byte digestByte : digestBytes) {
                    sb.append(((Integer.toHexString((digestByte & 0xFF) | 0x100)).substring(1, 3)).toUpperCase());
                    sb.append(":");
                }
                fingerprint = sb.substring(0, sb.length() - 1).toString();
            }
        } catch (Exception e) {
            Log.e("e", e.toString());
        }
 
        return fingerprint;
    }
}

 调用上面的 String md5=AppSigning.getMD5(MainActivity.this)就可以了文章来源地址https://www.toymoban.com/news/detail-706127.html

到了这里,关于Android打包时签名文件keystore的MD5值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android创建签名文件,并获取签名文件MD5,SHA1,SHA256值

    一、创建Android签名文件         使用Android Studio开发工具,可视化窗口进行创建 第一步:点击AndroidStudio导航栏上的 Build→Generate Signed Bundle / APK 第二步:选择APK选项    第三步:创建签名文件 第四步:输入创建签名的文件的各内容信息 点击ok,即可完成签名的文件的创建

    2024年02月07日
    浏览(59)
  • Android 应用签名证书的SHA1、MD5、SHA256值在哪获取?

    SHA1值分为发布版和调试版。MD5、SHA256与SHA1的获取是一样的。 调试版就是我们平时开发测试时用的默认签名文件。这个默认的签名文件一般是在c盘的用户名目录下的.android文件夹内。 默认文件就是  debug.keystore 获取调试版的SHA1值 : 回车后即可看到调试版的SHA1值了。

    2024年02月12日
    浏览(59)
  • APP备案(Android) - 获取签名证书公钥、MD5

    因为近期刚针对各应用平台对APP备案时间节点要求进行了统一整理,然后隔天就被要求提供一下app相关的的公钥和MD5,虽然很快就解决了这个事情,但忍不住又稍微衍生了一下,但行小步,莫问远方吧 关联Blog APP备案(Android) - 各应用平台对APP备案时间节点要求 APP备案(Android

    2024年02月04日
    浏览(53)
  • 安卓APP证书Android签名证书.keystore文件制作生成

    将app发布到应用宝时,而上传安装包时提示如下图时, 但您或您的团队从未上传该应用,您可以通过认领功能认领应用。认领成功后该应用会自动转入您的账户下,同时保留应用全部数据,您可以在应用管理中进行管理。 1.点击认领应用 ,确认需认领应用的包名是否是你的

    2024年02月02日
    浏览(47)
  • Android下实现字符串或文件的MD5加密

    MD5-信息摘要算法简单介绍 MD5 (Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。 计算出来的MD5值是有可能重复的,但是概率很低。 加密过程几乎不可逆,除非维护一个庞大的Key-Val

    2024年02月15日
    浏览(47)
  • uniapp离线打包 如何查看公钥 /android studio 导出秘钥证书/获取MD5 SHA256 SHA1值

    使用uniapp离线打包 或者 根据 云端证书 获取 秘钥证书 app申请阿里云备案 在android studio 查看 离线打包的的MD5 SHA256 SHA1值 提示:根据证书或者签名 获取 MD5 SHA256 SHA1值 公钥 or 1.根据云端获取 生成证书 查看公钥 2.android studio 获取MD5 SHA256 SHA1值 3.如果没有获取到MD5 file = setting

    2024年01月18日
    浏览(69)
  • 解决Uniapp插件市场试用原生插件项目 没有MD5签名安卓无法自定基座打包的情况

    由于Android Studio官网无法正常打开,所以进入google的网站进行下载Android Studio,网址:https://developer.android.google.cn/ 进入页面 后,点击“下载Android Studio” 进入页面后,当前推荐的版本是“Android Studio Hedgehog”, 点击按钮下载 。 Android Studio安装成功后,新建项目New Project选择

    2024年01月19日
    浏览(58)
  • 安卓keytool获取不到签名文件的MD5

    目前通过 keytool -list -v -keystore xxx.jks 这种方法获取签名的md5时,只能显示SHA1和SHA256,不显示md5: 解决办法: 1.先将自己的keystore配置进app下的build.gradle中: 2.打开AndroidStudio的Gradle,找到Tasks-android-signingReport,双击: 找到Config为release,Alias与你签名文件的别名一致的信息,即可

    2024年02月11日
    浏览(40)
  • APP备案,iOS签名文件MD5、公钥获取方法

    前言 2023年8月,国内开始要求应用市场上架的APP要备案,备案则需要提交安卓APP签名文件中的MD5、公钥等信息,如下图是某平台APP备案需要提交的信息。 获取MD5等信息 最省事方法 针对没有ide工具,没有从事过iOS开发,或想节省时间的朋友,建议通过我们开发的网页来获取

    2024年02月08日
    浏览(37)
  • 获取安卓签名文件的MD5值与SHA1码

    目录 前言 一、用命令行的方式仅能获取SH1、SHA256 ​编辑 二、用gradle的方式可以获取MD5值 1.打开Android Studio,点击右边的Gradle 2.点击大象,输入查询签名信息的命令 总结 公司App项目要备案,要搜集MD5值与SHA1码,用了以前的命令行方式只获取到SHA1,奇怪,网上学习了下,原来

    2024年02月16日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包