Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在电子邮件地址内移动点(周期)的算法_C++_Algorithm_Gmail - Fatal编程技术网

C++ 在电子邮件地址内移动点(周期)的算法

C++ 在电子邮件地址内移动点(周期)的算法,c++,algorithm,gmail,C++,Algorithm,Gmail,对于那些不了解GMAIL的人来说,GMAIL允许你在原始邮件的基础上创建无限数量的邮件。如果您的电子邮件是“mygmail@gmail.com“那么这可以通过两种方式实现: 1) 在gmail末尾的“+”后面添加文本,例如mygmail+somethinghere@gmail.com 所有电子邮件仍将发送至mygmail@gmail.com 2) 把“.”放在你的gmail地址内(开头和结尾除外),例如m。ygmail@gmail.com,m.y。gmail@gmail.com,m.yg.mai

对于那些不了解GMAIL的人来说,GMAIL允许你在原始邮件的基础上创建无限数量的邮件。如果您的电子邮件是“mygmail@gmail.com“那么这可以通过两种方式实现:

1) 在gmail末尾的“+”后面添加文本,例如mygmail+somethinghere@gmail.com 所有电子邮件仍将发送至mygmail@gmail.com

2) 把“.”放在你的gmail地址内(开头和结尾除外),例如m。ygmail@gmail.com,m.y。gmail@gmail.com,m.yg.mai。l@gmail.com注:我的。。gmail@gmai.com及mygmail@gm.ail.com不行

我正在测试一个需要通过有效电子邮件地址注册的应用程序(发送电子邮件激活)。方法(1)是执行此操作的最简单方法,但电子邮件地址字段中不允许“+”。这意味着我需要使用方法(2)创建一个gmail帐户数据库

有人能帮我做一个算法(最好是C/C++代码),我可以提供一段文本,它可以生成所有可能的变体吗

一些快速的数学计算表明,可能的组合数为2^(n-1),其中n是电子邮件中的字符数


谢谢

伪代码为您提供了另一个解决方案。正如你所说,这里有2^(n-1)个组合,其中n是电子邮件字符串的长度,因此我们用0到2^(n-1)-1的数字范围对点的位置进行编码

假设s是您的电子邮件地址,没有@part(在您的示例中是mygmail)

现在,如果您不想要所有的2^(n-1)组合(如果n>15,则可能太大),只需为第一个for循环加上上限,例如: 对于i=0到999,获得前1000个组合


在C/C++中,2^(n-1)转换为1>j)&1)。

您是否考虑过有人可以通过使用101个字符的电子邮件地址注册来执行DNS攻击(只需看看服务器生成2^100个字符串并将其存储在数据库中需要多长时间)。您到底在尝试实现什么?如果电子邮件地址符合RFC3696(第3节),则该地址为“有效电子邮件地址”,您的应用程序不应进行进一步检查。您是否正在编写特殊的大小写代码,将“gmail.com”域与所有其他域区别对待?@AdamMihalcin验证也可以使用reg-ex进行。显然,不是针对已注册的电子邮件,而是针对有效的电子邮件。@Jon您完全正确。但我刚才解释说,在面向公众的服务器上实现“一种算法(最好是C/C++代码),在这种算法中,我可以提供一段文本,并生成所有可能的变体”,这是个坏主意。@user1282312您可能不理解Adam说的话。试着用一封包含30个或更多字符的电子邮件运行ElKamina的代码,看看会发生什么。谢谢Duc。这甚至更好。
def generateComb(cur,rem):
    if len(rem)>0:
        generateComb(cur +rem[0], rem[1:])
        generateComb(cur+'.'+rem[0], rem[1:])
    else:
        print cur

generateComb('m','ygmail')
n = length(s)
for i = 0 to 2^(n - 1) - 1
    s2 = ''
    for j = 0 to n - 2 do
        s2 = s2 + s[j]
        if (bit j in i is set)
           s2 = s2 + '.'
    s2 = s2 + s[n - 1]
    print s2