一个密码是一个数学难题,用不同的符号来表示数字,一个给定的系统必须是正确的。最常见的形式是一个数学方程(如下所示),但有时可以有多个方程或陈述。手工破解密码通常包括逻辑推理和对剩余可能性的详尽测试。此外,请记住,一个密码可能没有解,可能只有一个唯一解,甚至可能有多个解。
我们将探索各种处理密码的技术,为您提供一个完整的武器库来解决密码,如:
为了简单和一致性,我们将假设如下:
我们将应用密码简单方程的一些性质。如果你不熟悉这个概念,请先看主要文章:简单的方程式.
解上述密码为 和 我们可以把它解释为两个整数的和。也就是说,
这给了 .我们可以单独检查一下 和 给出了一个解决方案。
找到表示符号的值 .
将密码转换为一个方程 .
然后我们将这些3位整数转换为一个代数表达式:
因此,我们有
2)列的重排
上面展示了两种加密方法。对于左边的,如果我们重新排列数字/字母在它们各自的列中,我们将得到右边的密码。请注意,只有当它是一个简单的加法时,我们才能这样做。这是可行的,因为我们已经把密码转换成一个方程,然后又转换回一个修改过的密码。因此,解左边的未知量等价于解右边的未知量。在这种情况下,一个简单的代数可以解决它:
对于上面的密码,找到的值 和 这样
重新排列各自列中的数字,可以得到以下密码:
对这个密码的解释表明,任何列中的数字的和都是6。自 它们都是个位数的正整数 ,我们有 只有。
奖金:试着用777代替666来解决上面的例子。
3)继续
一个携带是从一列数字转移到另一列更有效的数字的数字。
对于上面的密码,我们可以立即证明这一点 而不知道其他未知字母的值!方法如下:
我们可以证明两个4位整数的和不超过 .既然我们知道了 是零, 被迫
这种技术的好处是限制未知变量的可能值,从而使谜题更容易解决。更一般地,我们有以下定理:
如果我们有 正整数,它们都有相同的位数,这些数的和的结转的最大值是
在上面的密码中有一些未知数 和 找出…的价值
利用我们在上面学到的概念,我们可以看到 只有。
注意:显然我们可以先解出其他未知量。例如,从第一列 从第三列开始 ,这意味着 因为我们只取最后一位 为 进位是 .然后 与携带 .因此 .但这种方法要长得多。
当四个不同的四位数整数的和等于一个五位数时 的前导数字的可能值
利用结转的概念,我们得出。的最大可能值 是
所有可能的前位数 是 和
从以上的解释,我们知道 .用结转的概念,说明一下
因为有一个carry在 列, 列 必须小于或等于 .但是所有这些不同的字母都有不同的值,所以通过阅读 ,我们有 ,在那里 是结转的吗 与 或 .记住,唯一可能的值 和 是 .
如果 ,我们有 ,或者只是 ,这迫使 只取9和的值 的价值 .
如果 ,我们有 ,或者只是 ,这迫使 取8的值 的价值 .无论哪种方式, 是唯一可能的解决办法。
这是 具有相同数字数的正整数,所以进位只能是0或1。所以 或 只有。如果 ,那么第三列将进位,这意味着 是小于还是等于 这是不可能的。所以第三列没有结转。因此 只有。
最后,我们提到第三栏。自 ,则有一个非零的结转值,这意味着 因此,
像模运算一样,我们将应用密码的可整除规则的一些性质。如果你不熟悉这个概念,请先看主要文章,可分性规则.
通过整除法则 从最后一个数字开始 数字号码是 另外两个数字的最后两位中至少有一位必须以 因此 .现在,因为 -数字能被整除 它的数字和必须能被整除 也所以 是整除 与 一个单位数的整数,这意味着 只有。
上面显示了一个不完整的密码。的可能值 仅利用可整除法则的性质。
因为 是整除 和 是整除 是整除 这意味着 是整除 意味着数字的和必须能被整除 :
上面显示了一个不完整的密码。求 和 仅利用可整除法则的性质。
因为 结尾 的 -数字能被整除 所以这个数的最后一位是 或 只有。因为它是一个偶数的乘法,所以最后一位必须是 所以 只有。
自 , -数字能被整除 因此,数字的和可以被整除 也也就是说, 只有。
在本节中,我们将利用整数的因数分解来解决密码问题。
对于上面的例子,我们有一个 -digit number和1 -数字,使它们的乘积等于 通过质因数分解,我们得到 (数字211很容易被证实是质数)。转换到上面的形式,我们要么 或 .所以存在两个解 .
我们将在密码中应用模运算的一些性质。如果你不熟悉这个概念,请先看主要文章,模运算.
上面显示了两个数之间的不完全乘法,其中我们不一定有不同的单位数整数 和 .因为 是整除 和 是整除 ,它们的乘积被整除 .所以 必须被整除 .因此通过模运算, .
在前面的例子中,我们得到 和 .使用这些附加信息,显示 .
假设里面没有进位 列,然后 与 然后我们可以化简成 ,这意味着 .但这是自相矛盾的 已经写好了,所有的字母都必须是清楚的。所以没有进位 列,这意味着 只有。
现在,你能完成上面的第一个密码吗?
对于一些涉及乘法的密码算法,中国余数定理(CRT)将会派上用场。它使用了模运算的一些性质。如果你不熟悉这个概念,请先看主要文章,中国剩余定理.
用同样的规则,你能解决这个密码吗?
注意,这三个数字的后两位都是一样的。把它写成线性一致的形式 ,或 .因为 和 是连续的,它们一定是互质数。与 ,我们有
通过CRT解决 只是,这意味着 .你能自己完成这个解决方案吗?
有时,可能没有简单的方法来处理密码,我们能做的最多的是应用蛮力方法,并检查每个情况,以确定他们是否产生一个解决方案。
以上面的例子为例 可以是任意整数 和 包容: .通过试验和淘汰, 只有。这是解决这个问题的最简单的方法,因为只需要考虑一个未知,而这个未知的设置方式使得其他解决方法需要更长的时间。
有时,检查所有可能的情况会更加乏味,比如试错法。所以这不是解决这个问题的理想方法因此我们需要应用其他技术。一个可行的方法是使用编程代码来解决它。
找出上面密码中表示的未知字母的值。
解决方案:
1 2 3 4 5 6 7从itertools进口排列为我在排列(“0123456789”):str=''.加入(我)[E,U,R,O,P,一个,J,我,T,N]=列表(str)如果int(E+U+R+O+P+一个)+int(J+U+P+我+T+E+R)==int(N+E+P+T+U+N+E):打印(int(E+U+R+O+P+一个))
输出是
有一个方法被调用分支界限法它运用了运筹学的一种技术。至于主要文章,请参阅分支界限法.
上面这个wiki页面中的示例显示了只需要一种技术的加密。然而,解决使用混合技术的密码将会更加棘手,这将在后面的页面中展开:密码-解决问题.
本文中提到的技术足以解决所有的密码问题。然而,知道在解决密码时使用哪种技术肯定是有益的。以下是一些很好的指标,可以告诉你在处理密码时如何识别哪些技术是有用的:
技术 | 类型的问题 | 条件适用 |
1)将密码转换为方程 | 所有 | 很少的符号,每个出现1-2次 |
2)列的重排 | 每列最多1-2个符号 | |
3)继续 | (最有用的技术)来识别额外的约束条件 | |
4)可分性规则 | 一项有一个因子,有一个简单的可整除规则 | |
5)保理条款 | 如果我们知道整个项,可以很容易地分解它 | |
6)模运算 | 如果我们有很多信息对一个值取模(比如2,3,4,5,8) | |
中国余数定理 | 2个或2个以上数字的最后几位数相同 | |
8)反复试验 | 所有 | 变量很少,但它们发生了很多次 |
9)编程方法 | 所有 | 任何密码都可以 |