【发布时间】:2017-06-15 08:06:28
【问题描述】:
对于与密码相关的项目,我正在寻找一种算法,该算法可以根据几个选项计算某个字符串可能具有的变体数量。目前,字符串变体选项是大写/小写和字符到数字的替换(如 E=3)
例如,我们以字符串 'abc@def'
只有上/下变体,有 6 个字符可以变化,可能的变体总数为 2^6 = 64。
只有字符到数字的替换,有 2 个字符符合 (A=4,E=3)。这使得变化的数量 2^2 = 4。
当这两种方法都启用时,我正在努力计算变化的数量。 我试过(2^6 * 2^4),但显然这没有考虑同时应用两者时发生的重叠。
例如,变体 'abc@def' 和 'abc@dEf' 都导致 'abc@d3f' 带有数字de 字符 E 上的替换,应计为一个。
不知怎的,我无法弄清楚:)
【问题讨论】:
-
如果
abc@defa可以变成0..9或者A,对吧?所以我们有11用于单个字母 的选项和11**6 == 1771561提供的密码的变体。 -
不行,
a只能变成4或A。数字替换就像'l33t' -
在这种情况下,
a和e有 3 个选项;b、c、d、e有 2 个选项,@只有 1 个选项。最后我们有3 * 2 * 2 * 1 * 2 * 3 * 2 = 144变种 -
-
@DmitryBychenko 显然我想得太难了;这就是我要找的。 :)
标签: string algorithm variations