xamarin 如何为我的Android应用生成哈希?

ipakzgxi  于 2022-12-07  发布在  Android
关注(0)|答案(1)|浏览(120)

我正在使用本指南在我正在开发的应用程序中实现自动完成功能,但当我尝试在不同的计算机上测试它时,它返回了不同的哈希值https://www.c-sharpcorner.com/article/verify-otp-automatically-in-android-without-sms-read-permission-using-xamarin-fo/
使用的Helper类别如下:

using System.Text;
using Android.Content;
using Android.Content.PM;
using Android.Util;
using Java.Security;
using Java.Util;

namespace InteliMobile.App.Droid.Service
{
    public class AppHashKeyHelper
    {
        private static string HASH_TYPE = "SHA-256";
        private static int NUM_HASHED_BYTES = 9;
        private static int NUM_BASE64_CHAR = 11;

        private static string GetPackageSignature(Context context)
        {
            var packageManager = context.PackageManager;
            var signatures = packageManager.GetPackageInfo(context.PackageName, PackageInfoFlags.Signatures).Signatures;
            return signatures.First().ToCharsString();
        }
  
        public static string GetAppHashKey(Context context)
        {
            string keystoreHexSignature = GetPackageSignature(context);
            string appInfo = context.PackageName + " " + keystoreHexSignature;

            try
            {
                var messageDigest = MessageDigest.GetInstance(HASH_TYPE);
                messageDigest.Update(Encoding.UTF8.GetBytes(appInfo));
                byte[] hashSignature = messageDigest.Digest();

                hashSignature = Arrays.CopyOfRange(hashSignature, 0, NUM_HASHED_BYTES);
                string base64Hash = Android.Util.Base64.EncodeToString(hashSignature, Base64Flags.NoPadding | Base64Flags.NoWrap);
                base64Hash = base64Hash.Substring(0, NUM_BASE64_CHAR);

                return base64Hash;
            }
            catch (NoSuchAlgorithmException e)
            {
                return null;
            }
        }
    }
}

由于服务器运行在Windows机器上,我如何在不使用bash脚本的情况下获得哈希值?将应用程序部署到生产环境中并在其中包含helper类安全吗?

klsxnrf1

klsxnrf11#

客户端不需要计算哈希值,它是从服务器发送的,相关说明可在www.example.com上找到https://developers.google.com/identity/sms-retriever/verify#computing_your_apps_hash_string
你根本不用代码来做,你可以通过命令行工具来做。

相关问题