Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS保存应用程序内购买数据并处理越狱_Ios_In App Purchase - Fatal编程技术网

iOS保存应用程序内购买数据并处理越狱

iOS保存应用程序内购买数据并处理越狱,ios,in-app-purchase,Ios,In App Purchase,我已经创建了使用应用内购买的应用,一切正常。现在假设该设备已被越狱,无法访问互联网(因此我无法验证商店收据),用户找到我保存的购买信息文件并对其进行操作 我如何处理这种情况?有苹果定义的方法吗?还是应该使用加密(以及获取ERN的过程)?我使用的是我自己的“技巧”来处理这个问题 首先,我选择两个不同的大素数(5-6位数应该可以),然后将它们相乘,再加1。 其中一个是“master prime”,另一个取决于在商店购买的商品 (主素*素)+1 结果数字为9~15位数字 我将其保存在我的应用程序中的两

我已经创建了使用应用内购买的应用,一切正常。现在假设该设备已被越狱,无法访问互联网(因此我无法验证商店收据),用户找到我保存的购买信息文件并对其进行操作

我如何处理这种情况?有苹果定义的方法吗?还是应该使用加密(以及获取ERN的过程)?

我使用的是我自己的“技巧”来处理这个问题

首先,我选择两个不同的大素数(5-6位数应该可以),然后将它们相乘,再加1。 其中一个是“master prime”,另一个取决于在商店购买的商品

(主素*素)+1

结果数字为9~15位数字

我将其保存在我的应用程序中的两个不同位置(如文件和NSUserDefault)

这就是用户从商店买东西时发生的情况

启动应用程序时,我会进行一些检查:

  • 如果两个文件的编号相同
  • 如果prime=(9位数字/master_prime-1)的结果是prime
  • 如果素数有某个属性(通常数字之和等于某个数字)
如果其中任何一个都不正确,那么我会尝试连接到互联网以恢复购买。如果我不能…再见购买(直到我可以再次连接到互联网…ofc)

为了优化这个…你可以检查第一个条件…如果它不是真的,不需要检查其他条件

我给了我的一个朋友一个这样的数字来破解它。他花了5个小时,用17位数字作为主素数,5位数字作为存储变量素数。这是因为他知道自己在做什么……如果你不知道如何计算这些数字,那就需要几天甚至几个月的时间


您可以使用3个素数而不是2..或更大的数字…来改进这一点,或者每个素数具有不同的属性。

在大多数情况下,越狱设备可以忽略。如果有人真的想在越狱设备上盗版你的应用内购买,他/她将能够

是的,你可以让它变得更难,但是值得付出努力吗?增加一些功能,让你的应用程序更具吸引力,难道你不会(通过获得更多的销售额)从中获得更多利润吗

此外,苹果正在努力使iPhone难以越狱,目前看来,他们这样做会相当成功

不,据我所知,没有苹果定义的方式。是的,您可以使用设备ID作为密钥的加密(或者类似的加密)。您还可以使用iOS密钥链而不是文件来存储您的购买信息