?? form1.cs
字號:
{
double i=1,j,l,x,y;
int k,m,n,u=progressBar1.Value;
byte Pl_Bz;
//判斷排序方式
if(radioButton3.Checked) Pl_Bz=0;
else if(radioButton4.Checked) Pl_Bz=1;
else Pl_Bz=2;
for(k=0;k<NumCot;k++)
{
i*=ChrNum;
}
if(Pl_Bz==1) //降序排列
{
k=ChrNum;l=i;
for(j=i;j>0;j--)
{
//判斷有無重復方式
if((j==l) && (checkBox5.Checked))
{
k--;l=k;
for(m=1;m<NumCot;m++) l=l*10+k;continue;
}
x=j;
for(m=NumCot-1;m>=0;m--)
{
if(m==0) n=(int)x%ChrNum;
else
{
y=1;
for(n=0;n<m;n++) y*=ChrNum;
n=(int)(x/y);
x%=y;
}
fp.Write(Chr[n]);
}
fp.Write("\r\n");
if((i-j)*(NumCot+2)/1024/1024+u>progressBar1.Value)
{
progressBar1.Value+=1;
progressBar1.Refresh();
}
}
}
else if(Pl_Bz==0) //升序排列
{
k=0;l=0;
for(j=0;j<i;j++)
{
//判斷有無重復方式
if((j==l) && (checkBox5.Checked))
{
k++;l=k;
for(m=1;m<NumCot;m++) l=l*10+k;continue;
}
x=j;
for(m=NumCot-1;m>=0;m--)
{
if(m==0) n=(int)x%ChrNum;
else
{
y=1;
for(n=0;n<m;n++) y*=ChrNum;
n=(int)(x/y);
x%=y;
}
fp.Write(Chr[n]);
}
if(j*(NumCot+2)/1024/1024+u>progressBar1.Value)
{
progressBar1.Value+=1;
progressBar1.Refresh();
}
fp.Write("\r\n");
}
}
else //隨機生成
{
System.Random Rr=new System.Random();
for(progressBar1.Value=progressBar1.Minimum;progressBar1.Value<progressBar1.Maximum;progressBar1.Value++)
{
for(m=0;m<NumCot;m++)
{
n=(int)(ChrNum*Rr.NextDouble());
fp.Write(Chr[n]);
}
fp.Write("\r\n");
}
progressBar1.Value=progressBar1.Maximum;
}
}
private void radioButton5_CheckedChanged(object sender, System.EventArgs e)
{
if(radioButton5.Checked)
{
comboBox4.Enabled=true;
if(comboBox3.Text!=comboBox1.Text) comboBox3.Text=comboBox1.Text;
}
}
private void radioButton4_CheckedChanged(object sender, System.EventArgs e)
{
if(radioButton4.Checked) comboBox4.Enabled=false;
}
private void radioButton3_CheckedChanged(object sender, System.EventArgs e)
{
if(radioButton3.Checked) comboBox4.Enabled=false;
}
private void button1_Click(object sender, System.EventArgs e)
{
string LsFileName,LsExt;
int i,j,k,l,m;
string LsBuf;
double Disk_Size=1,Ls_Size=1;
char[] Chr= new char[96];
System.IO.StreamWriter fp;
//判斷選擇項目的合法性
if(textBox1.Text=="")
{
MessageBox.Show("您沒有輸入合法的文件名稱,請檢查確認!","系統提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);
return;
}
if(radioButton1.Checked)
{
if(!(checkBox1.Checked || checkBox2.Checked || checkBox3.Checked || checkBox4.Checked))
{
MessageBox.Show("您設置的密碼類型不合法,請檢查確認!","系統提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);
return;
}
}
if(System.Int32.Parse(comboBox1.Text)>System.Int32.Parse(comboBox3.Text))
{
MessageBox.Show("您設置的密碼位數不合法,請檢查確認!","系統提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);
return;
}
if(checkBox5.Checked)
{
if(System.Int32.Parse(comboBox1.Text)<3 || System.Int32.Parse(comboBox3.Text)<3)
{
MessageBox.Show("生成規則需要密碼位數大于3位,請檢查確認!","系統提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Warning);
return;
}
}
// 開始生成字典文件
if(radioButton1.Checked)//特定字符
{
textBox1.Text=textBox1.Text.Trim();
k=0;i=0;
if(checkBox1.Checked) //0-9
{
k=10;
for(;i<k;i++) Chr[i]=(char)('0'+i);
}
if(checkBox2.Checked) //a-z
{
k+=26;
j=i;
for(;i<k;i++) Chr[i]=(char)('a'+i-j);
}
if(checkBox3.Checked) //A-Z
{
k+=26;
j=i;
for(;i<k;i++) Chr[i]=(char)('A'+i-j);
}
if(checkBox4.Checked) //0x20-0x2f
{
k+=16;
j=i;
for(;i<k;i++) Chr[i]=(char)(' '+i-j);
}
}
else //全部字符
{
for(i=0;i<96;i++) Chr[i]=(char)(' '+i);
k=96;
}
//處理生成文件名稱中的空格
textBox1.Text=textBox1.Text.Trim();
//處理進程條
progressBar1.Step=1;
progressBar1.Minimum=0;
progressBar1.Value=0;
if(comboBox1.Text==comboBox3.Text)
{
for(m=0;m<System.Int32.Parse(comboBox1.Text);m++) Disk_Size*=k;
Disk_Size*=(double)(System.Int32.Parse(comboBox1.Text)+2);
if(checkBox5.Checked)
{
Ls_Size=(double)(k*(System.Int32.Parse(comboBox1.Text)+2));
Disk_Size-=Ls_Size;
}
Ls_Size=1024*1024;
if((Disk_Size%Ls_Size)>0) progressBar1.Maximum=(int)((Disk_Size-(Disk_Size%Ls_Size))/Ls_Size+1);
else progressBar1.Maximum=(int)(Disk_Size/Ls_Size);
}
else if(comboBox2.Text=="和")
{
for(m=0;m<System.Int32.Parse(comboBox1.Text);m++) Disk_Size*=k;
Disk_Size*=(double)(System.Int32.Parse(comboBox1.Text)+2);
if(checkBox5.Checked)
{
Ls_Size=(double)(k*(System.Int32.Parse(comboBox1.Text)+2));
Disk_Size-=Ls_Size;
}
for(m=0;m<System.Int32.Parse(comboBox3.Text);m++) Ls_Size*=k;
Ls_Size*=(double)(System.Int32.Parse(comboBox3.Text)+2);
Disk_Size+=Ls_Size;
if(checkBox5.Checked)
{
Ls_Size=(double)(k*(System.Int32.Parse(comboBox3.Text)+2));
Disk_Size-=Ls_Size;
}
Ls_Size=1024*1024;
if((Disk_Size%Ls_Size)>0) progressBar1.Maximum=(int)((Disk_Size-(Disk_Size%Ls_Size))/Ls_Size+1);
else progressBar1.Maximum=(int)(Disk_Size/Ls_Size);
}
else
{
Disk_Size=0;
for(m=System.Int32.Parse(comboBox1.Text);m<=System.Int32.Parse(comboBox3.Text);m++)
{
for(l=0;l<m;l++) Ls_Size*=k;
Ls_Size*=(double)(m+2);
Disk_Size+=Ls_Size;
if(checkBox5.Checked)
{
Ls_Size=(double)(k*(m+2));
Disk_Size-=Ls_Size;
}
}
Ls_Size=1024*1024;
if((Disk_Size%Ls_Size)>0) progressBar1.Maximum=(int)((Disk_Size-(Disk_Size%Ls_Size))/Ls_Size+1);
else progressBar1.Maximum=(int)(Disk_Size/Ls_Size);
}
if(radioButton5.Checked)
{
Disk_Size*=Ls_Size;
Disk_Size/=(System.Double.Parse(comboBox1.Text)+2);
if(Disk_Size<System.Double.Parse(comboBox4.Text))
{
MessageBox.Show("隨機生成密碼個數太大,已經超過密碼規則定義的個數!系統將自動調整……","系統提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
m=(int)Disk_Size;
LsBuf=m.ToString();
if(comboBox4.Items.IndexOf(LsBuf)==-1) comboBox4.Items.Add(LsBuf);
comboBox4.Text=LsBuf;
}
else Disk_Size=System.Double.Parse(comboBox4.Text)*(System.Double.Parse(comboBox1.Text)+2);
progressBar1.Maximum=System.Int32.Parse(comboBox4.Text);
}
if(Disk_Size>Ls_Size)
{
Disk_Size/=Ls_Size;
if(MessageBox.Show("生成的字典文件需要占用"+Disk_Size.ToString(".00")+"M的磁盤空間!繼續嗎?","系統提示",System.Windows.Forms.MessageBoxButtons.YesNo,System.Windows.Forms.MessageBoxIcon.Information)== DialogResult.No) return;
}
else if(Disk_Size>1024)
{
Disk_Size/=1024;
MessageBox.Show("生成的字典文件需要占用"+Disk_Size.ToString(".00")+"K的磁盤空間!繼續嗎?","系統提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
}
else MessageBox.Show("生成的字典文件需要占用"+Disk_Size.ToString(".00")+"字節的磁盤空間!繼續嗎?","系統提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
//打開進程條
panel2.Visible=true;
panel1.Visible=true;
m=1;
LsFileName=textBox1.Text.Substring(0,textBox1.Text.Length-4);
LsExt=textBox1.Text.Substring(textBox1.Text.Length-4,4);
for(l=System.Int32.Parse(comboBox1.Text);l<=System.Int32.Parse(comboBox3.Text);l++)
{
panel2.Refresh();
if(comboBox1.Text==comboBox3.Text)
{
fp=new System.IO.StreamWriter(textBox1.Text,false);
label6.Text="正在處理字典"+textBox1.Text+"文件……";
label6.Refresh();
}
else
{
fp=new System.IO.StreamWriter(LsFileName+m.ToString("00")+LsExt,false);
label6.Text="正在處理字典"+LsFileName+m.ToString("00")+LsExt+"文件……";
label6.Refresh();
}
Creat_Dic_File(Chr,k,fp,l);
fp.Close();
m++;
if(comboBox2.Text=="和" && l<System.Int32.Parse(comboBox3.Text)-1) l=System.Int32.Parse(comboBox3.Text)-1;
}
MessageBox.Show("密碼字典已經成功生成"+(m-1).ToString()+"文件!","系統提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
panel1.Visible=false;
panel2.Visible=false;
}
private void checkBox5_CheckedChanged(object sender, System.EventArgs e)
{
if(this.checkBox5.Checked)
{
radioButton5.Enabled=false;
if(radioButton5.Checked) radioButton3.Checked=true;
}
else radioButton5.Enabled=true;
}
private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
if(radioButton5.Checked && comboBox1.Text!=comboBox3.Text) comboBox3.Text=comboBox1.Text;
}
private void comboBox3_SelectedIndexChanged(object sender, System.EventArgs e)
{
if(radioButton5.Checked && comboBox1.Text!=comboBox3.Text) comboBox1.Text=comboBox3.Text;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -