暴力解読暗号シミュレーションプログラム、暴力解読暗号実装プログラムコードをシミュレートする
暴力的に暗号を解読する原理:簡単な変換暗号の組み合わせを通じて、すべての可能な暗号の組み合わせを列挙して比較を試みる.いつも1組の組み合わせが正しい.しかし、これは大量の対比を通じて解読を実現する必要がある.そのため、パスワードの長さが長ければ長いほど、数字のアルファベットと記号の組み合わせ、大文字と小文字の組み合わせなど、パスワードの暴力的な解読の難しさが大幅に向上します.プログラムが暴力的な解読を実現するシミュレーション原理:ASCII符号化の範囲内で、指定された長さのパスワードを並べて組み合わせると、長さが大きいほど、組み合わせ数が多くなることが予想される.プログラムでは全配列が用いられ,すべての組合せが配列されており,符号化の順序から並べられているため,最も非効率である.配列の組合せを生成すると,パスワードと照合し,一致するか否かを判断する.もちろん実際の状況では、上陸や他のことを試しています.例えばwifiパスワードを解読すると、生成したパスワードを組み合わせて接続ルータにログインします.プログラムでは、パスワードの数桁で、出力後に消去し、大量のブラシ出力ではなく、パスワードの組み合わせを一定の位置で変化させます.これは関数の最背面層のforループ出力bロールバック文字の役割です.実际の応用シーン:実际に解読する时、通常パスワードの辞书があって、はっきり言って、よく使うパスワードのリストです.私たちのパスワードを分析することで、88888888などの慣用的なパスワードの組み合わせがわかります.だから最初はこれらの慣用パスワードで試して、だめなら、最初から最後まで試してみましょう.入力できない文字はパスワードに表示されないので、これらの文字もスキップされます.私たちのこのプログラムは最も基本的な解読プレゼンテーションにすぎません.実際に解読するには、実際の状況に応じてアルゴリズムを最適化する必要があります.例えば、1人のユーザーの誕生日を知ると、誕生日グループを使って試してみることができ、名前が得られたら、名前情報と組み合わせて試してみることができ、情報が多ければ多いほど、難易度が低くなります.注意事項:だから、私たちは普段パスワードを設定する時、できるだけ誕生日の名前などの情報でパスワードを設定しないでください.これらの情報はすでにネット上で氾濫しているので、どこでも調べることができます.誰かに狙われてパスワードを解読させると、それはかなり簡単なことです.しかし、暴力的な解読はどこにでもあるわけではない.ほとんどの成熟したシステムでは、ログイン回数が制限され、エラーが何回を超えるとログインを拒否します.そのため、暴力的な解読のリスクも低減された.しかし、あなたの情報が多すぎて、暴力的に解読する必要はありませんが、簡単に解読することができます.
#include
#include
#include
char * pw = NULL;
char password[50];
int len =0;
bool po(int n);
using namespace std;
void main()
{
cout<<" : ";
cin.getline(password,50);
len = strlen(password);
pw = new char[len+1];
for(int i=0;i1;i++)
pw[i]=32;
int n=0;
cout<<"<<>>:
";
cout<<" ... >>";
if(po(n))
cout<<" : ["<"]"<"pause");
}
bool po(int n)
{
if(n>len)return false;
for(int i=32;i<127;i++)
{
pw[n] = (char)i;
if(n==len)
{
pw[n]='\0';//
if(!strcmp(password,pw))
{
cout<<" !
";
return true;
}
else
{
cout<for(int n=0;n// -
cout<<"\b";
}
return false;
}
if(po(n+1))return true;
}
return false;
}