编码/解码ID撤消问题

时间:2014-09-23 19:15:42

标签: php encryption encoding cryptography encode

  • 情景:

A)您有charset 100,其中第一个charactersA, B, C,最后一个characters-, _

B) encode函数返回长度为10的字符串。

C) encodenumber转换为number

中的相关charset

示例: A == 0 || B == 1 || C == 2 || - == 98 || _ == 99

可能性:100 ^ 10 = 1e+20 || 100,000 Quadrillion || 100,000,000,000 Billion

  • 问题:您如何判断999iii_i还是i_
  • 注意:上面概述的问题解决方案应该适用于所有可能的情况

1 个答案:

答案 0 :(得分:0)

看起来像家庭作业......

让我们来看看我们的问题:

999不能在我们的字符集中表示为单个字符 我们可以用3种不同的方式对其进行编码

9 9 9 =>我,我

99 9 => _I

9 99 =>我_

现在......单独一个字符集不能进行编码......此时你应该读一下"代码"是... http://en.wikipedia.org/wiki/Code

请注意,这与加密完全无关......

所以......我们需要一个用于编码/解码代码的规则集

因为我们应该制定规则集,所以只要我们记住我们必须遵循的其他关键规则,我们可以自由选择处理事情......

代码应该是10个字符...最大限度地从我看到的,或者III不可能是我们的代码的有效示例... AAAAAAAAIII将是......所以我们假设我们可能会下降前导零,或者在这种情况下,并进一步假设III和AAAAAAAIII是相同的

现在我们有了这样的事实:我们的代码有100 ^ 10个可能的代码字,只有当我们的长度为10的字符集的每个组合都是有效的代码字时,才能获得这些代码字

所以这三个...... III和I_和_I ......必须是有效的代码字......

这是否意味着所有三个都具有999的值?

简短:没有

长:

如前所述,需要一个规则集来为代码赋予意义......

由于没有给出编码规则集,我们似乎可以自由创建一个......

让我们看看规则集来编码我们的常规基数10 ...

我们有一个从0到9的字符集 - > 10位数

数字中数字的位置包含信息...

123例如可写为1 * 10 ^ 10 + 2 * 10 ^ 1 + 3 * 10 ^ 0

如果我们将其转移到我们的新编码中......让我们将其称为基础100 ...它将如下所示:

123 - > 1 * 100 ^ 1 + 23 * 100 ^ 0

=> 1 = B ... 23 = X => 123 - > BX

999 - > 9 * 100 ^ 1 + 99 * 100 ^ 0 - >我_

但谁说我们必须在代码中声明最左边的数字才是最重要的数字?

如果我们不解释它怎么办?

不是99 * 100 ^ 0 + 9 * 100 ^ 1 = 999?

是的...因此我们可以把它写成_I呢......

现在哪一个是正确的? ......这只取决于我们代码的规则集...如果它说最左边的数字是最重要的数字,答案就是I_ ......如果最右边的数字是最重要的数字,答案是_I

只要没有指定编码的规则集,这个问题的答案就无法解决......你只能尝试做出有根据的猜测,并使用与我们的"正常&#相同的约定34;基数10编码...最左边的数字=最高有效数字 - >我_

但请记住......这是猜测...如果我在测试中得到这样的问题,我会解释为什么没有答案,除非指定了编码规则

tldr:

使用提供的信息,如果是i_或_i

,则可以自由选择