穷举字符串c语言,穷举密码算法

//********************************************************** *********

//在许多情况下我们需要穷举组合的算法,比如密码词典。

//这个算法的关键是密码下标进位的问题。

//另外本例子中的写文件语句效率比较低,为了降低算法复杂度没有优化。

//如果要提高写文件的效率,可以使用缓冲区,分批写入。

//*********************************************breath.cnpick .com*****

void createpassword()

{

#define passwordmax 8//将生成密码的最大长度

char a[]=”0123456789abcdefghijklmnopqrstuvwxyz”;//可能的字符

long ndictcount=sizeof(a);//获得密码词典长度

char cpass[passwordmax+2];//将生成的密码

long nminl=1,nmaxl=3;//本例中密码长度从1-3

long array[passwordmax];//密码词典下标

assert(nminl<=nmaxl && nmaxl<=passwordmax);//容错保证

long nlength=nminl;

register long j,i=0;

bool bnext;

cstdiofile file;

file.open(“c:\\dict.txt”,cfile::modecreate|cfile::modewrite) ;

while(nlength<=nmaxl)

{

for(i=0;i

array=0;

bnext=true;

while(bnext)

{

for(i=0;i

cpass=a[array];

cpass=’\0′;

file.writestring(cpass);

file.writestring(“\n”);

for(j=nlength-1;j>=0;j–)//密码指针进位

{

array[j]++;

if(array[j]!=ndictcount-1)break;

else

{

array[j]=0;

if(j==0)bnext=false;

}

}

}

nlength++;

}

file.close();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值