国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android打包時(shí)簽名文件keystore的MD5值

這篇具有很好參考價(jià)值的文章主要介紹了Android打包時(shí)簽名文件keystore的MD5值。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

些SDK提供方需要我們提供打包APK時(shí)使用的包名和簽名文件(xxxxxx.jks這個(gè)文件)MD5值,然后SDK服務(wù)端應(yīng)該會進(jìn)行比對保證商戶調(diào)用的合法性。不然光靠包名是可以偽造的,怎么獲取簽名文件的MD5值?

方法一:

原先通過命令keytool -list -v -keystore test.jks 可以查看md5值,但是發(fā)現(xiàn)現(xiàn)在查看不了,只有SHA1和SHA256的

android 應(yīng)用簽名md5,android,android studio,gradle

方法二:改成從androidstudio查看

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

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

?android 應(yīng)用簽名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')
? ? }
}
}

右側(cè)gradle Tasks里面雙擊signingReport就可以查看簽名文件的MD5值了
?

?android 應(yīng)用簽名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<>();
 
    /**
     * 返回一個(gè)簽名的對應(yīng)類型的字符串
     *
     * @param context
     * @param type
     * @return 因?yàn)橐粋€(gè)安裝包可以被多個(gè)簽名文件簽名,所以返回一個(gè)簽名信息的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;
    }
 
    /**
     * 返回對應(yīng)包的簽名信息
     *
     * @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;
    }
 
    /**
     * 獲取相應(yīng)的類型的字符串(把簽名的byte[]信息轉(zhuǎn)換成16進(jìn)制)
     *
     * @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;
    }
 
    /**
     * 獲取相應(yīng)的類型的字符串(把簽名的byte[]信息轉(zhuǎn)換成 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;
    }
}

?調(diào)用上面的 String md5=AppSigning.getMD5(MainActivity.this)就可以了文章來源地址http://www.zghlxwxcb.cn/news/detail-706127.html

到了這里,關(guān)于Android打包時(shí)簽名文件keystore的MD5值的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android創(chuàng)建簽名文件,并獲取簽名文件MD5,SHA1,SHA256值

    Android創(chuàng)建簽名文件,并獲取簽名文件MD5,SHA1,SHA256值

    一、創(chuàng)建Android簽名文件 ??????? 使用Android Studio開發(fā)工具,可視化窗口進(jìn)行創(chuàng)建 第一步:點(diǎn)擊AndroidStudio導(dǎo)航欄上的 Build→Generate Signed Bundle / APK 第二步:選擇APK選項(xiàng) ? ?第三步:創(chuàng)建簽名文件 第四步:輸入創(chuàng)建簽名的文件的各內(nèi)容信息 點(diǎn)擊ok,即可完成簽名的文件的創(chuàng)建

    2024年02月07日
    瀏覽(32)
  • Android 應(yīng)用簽名證書的SHA1、MD5、SHA256值在哪獲取?

    Android 應(yīng)用簽名證書的SHA1、MD5、SHA256值在哪獲取?

    SHA1值分為發(fā)布版和調(diào)試版。MD5、SHA256與SHA1的獲取是一樣的。 調(diào)試版就是我們平時(shí)開發(fā)測試時(shí)用的默認(rèn)簽名文件。這個(gè)默認(rèn)的簽名文件一般是在c盤的用戶名目錄下的.android文件夾內(nèi)。 默認(rèn)文件就是? debug.keystore 獲取調(diào)試版的SHA1值 : 回車后即可看到調(diào)試版的SHA1值了。

    2024年02月12日
    瀏覽(22)
  • APP備案(Android) - 獲取簽名證書公鑰、MD5

    APP備案(Android) - 獲取簽名證書公鑰、MD5

    因?yàn)榻趧傖槍Ω鲬?yīng)用平臺對APP備案時(shí)間節(jié)點(diǎn)要求進(jìn)行了統(tǒng)一整理,然后隔天就被要求提供一下app相關(guān)的的公鑰和MD5,雖然很快就解決了這個(gè)事情,但忍不住又稍微衍生了一下,但行小步,莫問遠(yuǎn)方吧 關(guān)聯(lián)Blog APP備案(Android) - 各應(yīng)用平臺對APP備案時(shí)間節(jié)點(diǎn)要求 APP備案(Android

    2024年02月04日
    瀏覽(25)
  • 安卓APP證書Android簽名證書.keystore文件制作生成

    安卓APP證書Android簽名證書.keystore文件制作生成

    將app發(fā)布到應(yīng)用寶時(shí),而上傳安裝包時(shí)提示如下圖時(shí), 但您或您的團(tuán)隊(duì)從未上傳該應(yīng)用,您可以通過認(rèn)領(lǐng)功能認(rèn)領(lǐng)應(yīng)用。認(rèn)領(lǐng)成功后該應(yīng)用會自動轉(zhuǎn)入您的賬戶下,同時(shí)保留應(yīng)用全部數(shù)據(jù),您可以在應(yīng)用管理中進(jìn)行管理。 1.點(diǎn)擊認(rèn)領(lǐng)應(yīng)用 ,確認(rèn)需認(rèn)領(lǐng)應(yīng)用的包名是否是你的

    2024年02月02日
    瀏覽(25)
  • Android下實(shí)現(xiàn)字符串或文件的MD5加密

    MD5-信息摘要算法簡單介紹 MD5 (Message-Digest Algorithm),一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個(gè)128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。 計(jì)算出來的MD5值是有可能重復(fù)的,但是概率很低。 加密過程幾乎不可逆,除非維護(hù)一個(gè)龐大的Key-Val

    2024年02月15日
    瀏覽(31)
  • uniapp離線打包 如何查看公鑰 /android studio 導(dǎo)出秘鑰證書/獲取MD5 SHA256 SHA1值

    uniapp離線打包 如何查看公鑰 /android studio 導(dǎo)出秘鑰證書/獲取MD5 SHA256 SHA1值

    使用uniapp離線打包 或者 根據(jù) 云端證書 獲取 秘鑰證書 app申請阿里云備案 在android studio 查看 離線打包的的MD5 SHA256 SHA1值 提示:根據(jù)證書或者簽名 獲取 MD5 SHA256 SHA1值 公鑰 or 1.根據(jù)云端獲取 生成證書 查看公鑰 2.android studio 獲取MD5 SHA256 SHA1值 3.如果沒有獲取到MD5 file = setting

    2024年01月18日
    瀏覽(44)
  • 解決Uniapp插件市場試用原生插件項(xiàng)目 沒有MD5簽名安卓無法自定基座打包的情況

    解決Uniapp插件市場試用原生插件項(xiàng)目 沒有MD5簽名安卓無法自定基座打包的情況

    由于Android Studio官網(wǎng)無法正常打開,所以進(jìn)入google的網(wǎng)站進(jìn)行下載Android Studio,網(wǎng)址:https://developer.android.google.cn/ 進(jìn)入頁面 后,點(diǎn)擊“下載Android Studio” 進(jìn)入頁面后,當(dāng)前推薦的版本是“Android Studio Hedgehog”, 點(diǎn)擊按鈕下載 。 Android Studio安裝成功后,新建項(xiàng)目New Project選擇

    2024年01月19日
    瀏覽(24)
  • 安卓keytool獲取不到簽名文件的MD5

    安卓keytool獲取不到簽名文件的MD5

    目前通過 keytool -list -v -keystore xxx.jks 這種方法獲取簽名的md5時(shí),只能顯示SHA1和SHA256,不顯示md5: 解決辦法: 1.先將自己的keystore配置進(jìn)app下的build.gradle中: 2.打開AndroidStudio的Gradle,找到Tasks-android-signingReport,雙擊: 找到Config為release,Alias與你簽名文件的別名一致的信息,即可

    2024年02月11日
    瀏覽(23)
  • APP備案,iOS簽名文件MD5、公鑰獲取方法

    APP備案,iOS簽名文件MD5、公鑰獲取方法

    前言 2023年8月,國內(nèi)開始要求應(yīng)用市場上架的APP要備案,備案則需要提交安卓APP簽名文件中的MD5、公鑰等信息,如下圖是某平臺APP備案需要提交的信息。 獲取MD5等信息 最省事方法 針對沒有ide工具,沒有從事過iOS開發(fā),或想節(jié)省時(shí)間的朋友,建議通過我們開發(fā)的網(wǎng)頁來獲取

    2024年02月08日
    瀏覽(22)
  • 獲取安卓簽名文件的MD5值與SHA1碼

    獲取安卓簽名文件的MD5值與SHA1碼

    目錄 前言 一、用命令行的方式僅能獲取SH1、SHA256 ?編輯 二、用gradle的方式可以獲取MD5值 1.打開Android Studio,點(diǎn)擊右邊的Gradle 2.點(diǎn)擊大象,輸入查詢簽名信息的命令 總結(jié) 公司App項(xiàng)目要備案,要搜集MD5值與SHA1碼,用了以前的命令行方式只獲取到SHA1,奇怪,網(wǎng)上學(xué)習(xí)了下,原來

    2024年02月16日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包