Android应用内计费Dot Net中收据验证(C#)
我有一个提供应用程序内计费的 Android 应用程序,我们有一个应用程序服务器,Android 应用程序连接到该服务器为用户提供服务,在应用程序内购买时,我们希望将收据推送到服务器进行验证过程。
现在的问题是我不知道如何转换 Security.java< /a> dot net(C#) 中的文件,因为我们的服务器是用 dot net 编写的
注意:此文件附带 android 应用内计费相同的应用程序,该应用程序提供消息签名功能,我只需要在 dot net 中的等效功能。
有关此问题的更多详细信息,请访问 http://social.msdn .microsoft.com/Forums/en-US/netfxbcl/thread/66bb5683-fde6-47ca-92d7-de255cc8655a
I have a Android application which provides in-app billing and we have our application server to which android application connects to provide services to the user, on in-app purchase we want to push receipt to the server for verification process.
Now problem is I don't know how to convert Security.java file in dot net(C#) as our server is written in dot net
NOTE: This file comes with android in-app billing same application which provides message signing functions i just need their equivalent in dot net.
More Detail regarding this problem is available at
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/66bb5683-fde6-47ca-92d7-de255cc8655a
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这是一个纯 C# 实现,来自 Checking Google在 .Net 上播放签名。
创建一个控制台应用程序项目,将公钥转换为
RSACryptoServiceProvider
所需的 XML 格式。将 PEMKeyLoader.cs 添加到控制台应用程序项目。运行该控制台应用程序将输出(到控制台)RSACryptoServiceProvider 所需的 XML 格式。
现在您已经有了 XML 格式的公钥,您可以使用它来验证签名:
Here's a pure C# implementation, from Checking Google Play Signatures on .Net.
Create a console application project to convert the public key into the XML format that
RSACryptoServiceProvider
expects. Add PEMKeyLoader.cs to the console application project.Running that console application will output (to the console) the XML format that
RSACryptoServiceProvider
expects.Now that you have your XML-formatted public key, you can use it verify signatures:
我找到了解决方案,要实现这一点,您首先必须转换公钥格式,因为点网使用不同的密钥作为输入。
我不知道其他方法,但我们可以使用 java 代码获取点网格式密钥,您只需运行一次即可生成点网友好的 RSA 公钥。
(仅当给定的公众不会快速变化时才建议这样做,例如在 Android 市场应用内计费的情况下)
以下 Java 代码对我有用
现在要验证数字签名,您可以在 dot net 程序中使用以下代码(c#)假设 GCHO_PUB_KEY_EXP 是您的指数,GCHO_PUB_KEY_MOD 是您通过上述 Java 代码提取的模数,
我希望它对每个人都适用,就像对我一样。感谢
代码项目文章
I found the solution, to achieve you first have to convert the public key format as dot net uses sort of different Key as an input.
I don't know the other ways but we can get dot net format key using a java Code which you have to run only once to generate the dot net friendly RSA Public Key.
(this is only recommended when the given public do not changes rapidly e.g. in case of Android market in-app billing)
following Java Code worked for me
Now to verify the Digital Signature you can use the following code in your dot net program(c#) provided GCHO_PUB_KEY_EXP is your Exponent and GCHO_PUB_KEY_MOD is your Modulus extracted by above Java Code
I hope it will work for everyone as worked for me. Thanks
Credit Goes to Code Project Artical
对于所有需要验证签名的人来说,这里有一个完整的 C# 实现,使用 BouncyCastle dll 来提供帮助。
如果您使用 Google 公钥向课程提供信息,您将能够验证签名,而不需要任何 Java 代码。玩得开心。格茨·马丁
For all folks who need to verify signature here is a complete c# implementation using the BouncyCastle dll to assist.
If you feed the class with your Google public key you will be able to verify signatures, without the need for any Java code. Have fun with it. grtz Martien
供大家搜索,这里是完整的 Java 文件,以及 VB.NET 中的函数。
只需添加到一个新的 Java 项目并作为带有断点(int i=0;)的 java 应用程序运行即可提取您的密钥,代码不是我的,只是由我来处理,感谢原作者,上面的链接
和VB.NET
FYI for peeps searching, here is the complete Java file, and the function in VB.NET.
Just add to a new Java project and run as java app with a break point (int i=0;) to extract your keys, code not mine, just bodged by me, props to the original author, link above
and VB.NET
我的解决方案基于 BouncyCastle C# nuget。
将消息、签名和密钥替换为您的消息、签名和密钥并进行测试。不需要 java 来获取模数或指数。
My solution based on BouncyCastle C# nuget.
Replace the message, signature and key with your one and test it. No need for java to get the Modulus or Exponent.
对于任何可能仍然感兴趣的人,这里有一个纯 C# 解决方案(使用 .NET 5.0 测试):
For anyone that might still be interested, here's a pure C# solution (tested with .NET 5.0):