gpt4 book ai didi

Dot Net 中的 Android 应用内计费收据验证(C#)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:55 24 4
gpt4 key购买 nike

我有一个提供应用内结算的 Android 应用程序,我们有我们的应用程序服务器,Android 应用程序连接到该应用程序服务器以向用户提供服务,在应用程序内购买时,我们希望将收据推送到服务器以进行验证过程。

现在的问题是我不知道如何转换 Security.java dot net(C#) 中的文件,因为我们的服务器是用 dot net 编写的

注意:此文件附带 android 应用内计费相同的应用程序,它提供消息签名功能,我只需要它们在 dot net 中的等效项。

有关此问题的更多详细信息,请访问 http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/66bb5683-fde6-47ca-92d7-de255cc8655a

最佳答案

这是一个纯 C# 实现,来自 Checking Google Play Signatures on .Net .

创建一个控制台应用程序项目,将公钥转换为 RSACryptoServiceProvider 期望的 XML 格式。添加PEMKeyLoader.cs到控制台应用程序项目。

using PublicKeyConvert;
using System.Security.Cryptography;

namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
RSACryptoServiceProvider provider = PEMKeyLoader.CryptoServiceProviderFromPublicKeyInfo(MY_BASE64_PUBLIC_KEY);
System.Console.WriteLine(provider.ToXmlString(false));
}

const string MY_BASE64_PUBLIC_KEY = "Paste your base64 Google public key here.";
}
}

运行该控制台应用程序将输出(到控制台)RSACryptoServiceProvider 期望的 XML 格式。

现在您有了 XML 格式的公钥,您可以使用它来验证签名:

public static bool Verify(string message, string base64Signature, string xmlPublicKey)
{
// Create the provider and load the KEY
RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
provider.FromXmlString(xmlPublicKey);

// The signature is supposed to be encoded in base64 and the SHA1 checksum
// of the message is computed against the UTF-8 representation of the message
byte[] signature = System.Convert.FromBase64String(base64Signature);
SHA1Managed sha = new SHA1Managed();
byte[] data = System.Text.Encoding.UTF8.GetBytes(message);

return provider.VerifyData(data, sha, signature);
}

关于Dot Net 中的 Android 应用内计费收据验证(C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5605124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com