微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在运行时xamarin.forms上检查APK签名

如何解决如何在运行时xamarin.forms上检查APK签名

大家好,我正在尝试实施防篡改保护,并在 xamarin形式的android 应用中验证应用签名。目前,我正在使用以下代码

var context = Android.App.Application.Context;
Signature sigs = context.PackageManager.GetPackageInfo(context.PackageName,PackageInfoFlags.Signatures).Signatures[0];

displayAlert("sigs.ToString()",sigs.ToString(),"ok");   //1331014879
displayAlert(" sigs.GetHashCode().ToString()",sigs.GetHashCode().ToString(),"ok");  //  android.content.pm.Signature@4f55acdf                         

sigs.GetHashCode()。ToString()返回 1331014879
sigs.ToString()返回 android.content.pm.Signature@4f55acdf

但是我想我可能做错了。这是在运行时获取验证android应用程序签名的正确方法吗?否则,请提供代码和指导。谢谢。

解决方法

如果API28或更高版本,则应像此线程一样检查是否有多个Signers。 How to use PackageInfo.GET_SIGNING_CERTIFICATES in API 28?

这是xamarin.android代码。

 public string Sig_Hash()
        {
            var Context = Android.App.Application.Context;

                foreach (Android.Content.PM.Signature signature in Context.PackageManager.GetPackageInfo(Context.PackageName,PackageInfoFlags.Signatures  ).Signatures)
                {
                    using (SHA1Managed sha1 = new SHA1Managed())
                    {
                        var hash = sha1.ComputeHash(signature.ToByteArray());
                        var sb = new StringBuilder(hash.Length * 2);
                        foreach (byte b in hash)
                        {
                            sb.Append(b.ToString("X2"));
                        }
                        return sb.ToString();
                    }

                }
                return "";
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。