2011-02-23 105 views
1

我的用户在某些情况下可以查看存储他们输入数据的数据库表的Web版本。由于各种原因,我需要包含所有存储的数据,包括每个记录的整数标记,这些标记在数据中封装相邻等等(这是为了在运行时提高速度和方便性)。但不是在webview中一对一地暴露他们,我想要一个被称为“保留”的混淆字段,并且包含一个难以理解的字符串,代表我可以轻松编码和解码的那些标记。如何在C++/Objective C中高效地执行此操作?如何混淆/去混淆整数属性?

谢谢!

+0

让我进一步解释 - 数据正在谷歌电子表格中提供给用户(“webview”可能有误导性),并且由于我希望能够将数据读回原始移动应用程序,因此我希望在电子表格中包含这些额外的“私人”数据,而不会分散用户的注意力或易于操作。 – ed94133 2011-02-23 23:35:38

回答

1

为什么不将每个字段转换为十六进制,并将它们作为字符串追加并保存该值?

只要你总是以相同的顺序附加字符串,将它们分开并将它们转换回数字应该是微不足道的。

+0

这是我最喜欢的方法,非常简单。我将创建一个像“%x%x%x%x%x”,flag1,flag2,flag3,flag4(校验和= constval + flag1 + flag2 + flag3 + flag4)的字符串。可能的整数值范围足够小,以至于我可以依赖十六进制中的标志值只有1个字符,因此很容易分开。谢谢! – ed94133 2011-02-24 07:11:50

2

是否有必要将该字段以可视方式展示给用户,还是仅需要将其无损捕获到webview的HTML内容中?如果可能,你可以在每行中包含标志作为隐藏的输入元素,即<input type=“hidden” …

+0

我认为如果它是一个真正的网页视图,它会很好,但请参阅上面的说明。 – ed94133 2011-02-23 23:36:27

0

使用对称加密(example)对值进行编码和解码。当然,只有你应该知道关键。
或者,Assymetric RSA更强大的加密功能,但效率更低,使用起来更复杂。

注:我大约需要这种设计的“种种原因” ...古玩

+0

谢谢 - 我可能会调查这一点(并参见上面的说明)。我怀疑它是否可能会过度杀伤。这并不是什么秘密,主要是我只是想避免分散用户的注意力,避免在我不知情的情况下使用这些值。如果他们把4改成5,我就说不出来。我在想一个好的基本编码算法可以告诉我,如果aH7c1已经改为aH7c2(因为后者无法解码),我需要重新计算邻接关系。有了真正的加密,我也担心会陷入模糊的法律领域,而且不必要的。 – ed94133 2011-02-23 23:41:28

0

乘以7的标志整数,加3,并转换为基础-36。要检查结果字符串是否被修改,请将其转换回base-2,并检查结果模数7是否仍然为3.如果是,则除以7得到标志。请注意,这受到重播攻击 - 用户可以复制任何有效的字符串。

-1

只需计算CRC-32(或类似的)并将其附加到您的价值。如果您的价值已被破坏,那么这将以非常高的概率告诉您。

+0

downvote的原因? – 2011-02-25 02:07:54