查找可能的字符串变体数量的算法
Algorithm to find number of possible string variations
对于与密码相关的项目,我正在寻找一种算法,该算法可以根据几个选项计算特定字符串可能具有的变化数量。目前,字符串变体选项是 upper/lowercase 和字符到数字的替换(如 E=3)
例如,让字符串 'abc@def'
仅 upper/lower 个变体,就有 6 个字符可以变体,可能的变体总数为 2^6 = 64.
仅通过字符到数字的替换,有 2 个字符符合 (A=4,E=3)。这使得变化的数量 2^2 = 4.
当这两种方法都启用时,我正在努力计算变化的数量。
我试过 (2^6 * 2^4),但显然这没有考虑应用两者时发生的重叠。
例如,变体 'abc@def' 和 'abc@dEf' 都会导致 'abc@d3f' 在字符 E 上用数字替换,应该算作一个。
我怎么搞不懂:)
只需计算密码中每个字母的所有可能性,然后将它们相乘:
letter options count
a a A 4 3
b b B 2
c c C 2
@ @ 1
d d D 2
e e E 3 3
f f F 2
最后我们有 3 * 2 * 2 * 1 * 2 * 3 * 2 == 144
个变体
对于与密码相关的项目,我正在寻找一种算法,该算法可以根据几个选项计算特定字符串可能具有的变化数量。目前,字符串变体选项是 upper/lowercase 和字符到数字的替换(如 E=3)
例如,让字符串 'abc@def'
仅 upper/lower 个变体,就有 6 个字符可以变体,可能的变体总数为 2^6 = 64.
仅通过字符到数字的替换,有 2 个字符符合 (A=4,E=3)。这使得变化的数量 2^2 = 4.
当这两种方法都启用时,我正在努力计算变化的数量。 我试过 (2^6 * 2^4),但显然这没有考虑应用两者时发生的重叠。
例如,变体 'abc@def' 和 'abc@dEf' 都会导致 'abc@d3f' 在字符 E 上用数字替换,应该算作一个。
我怎么搞不懂:)
只需计算密码中每个字母的所有可能性,然后将它们相乘:
letter options count
a a A 4 3
b b B 2
c c C 2
@ @ 1
d d D 2
e e E 3 3
f f F 2
最后我们有 3 * 2 * 2 * 1 * 2 * 3 * 2 == 144
个变体