質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

解決済

c パスワード解析の時間計測をするが、文字数を変えても時間が変化しない

st-riefu274
st-riefu274

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

3回答

0リアクション

0クリップ

1488閲覧

投稿2021/08/02 09:13

編集2021/08/02 11:57

前提・実現したいこと

自分でパスワードを入力し、それを解析して、解析にかかる時間を調べるプログラムを組んでいます。(パスワードは大文字、小文字、数字の62種類)

発生している問題・エラーメッセージ

パスワードの文字数を1~12の範囲で変えても、解析にかかる時間がほとんど変わりません。
(0.000018秒程度)
調べたところ文字数が増えれば、時間が変わっていくのですが…
例 参照サイトでは6文字は約5日
参照 https://japan.norton.com/brute-force-attack-9215

該当のソースコード

C

#include<stdio.h> #include<time.h> int main(void){ int i, j; long begin, end; char p[] = {"password2002"}, x[63] = {"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"}, y[] = {}; /*pにパスワードを入れる、yは出力用の配列*/ begin = clock();/*時間計測開始*/ for(i = 0; i < 12; i++){/*パスワード解析*//*iはパスワードの文字数未満にする*/ for(j = 0; j < 63; j++){ if(p[i] == x[i]){ y[i] = x[j]; break; } } } for(i = 0; i < 12; i++){/*解析したパスワードを出力*/ printf("%c", y[i]); } end = clock();/*計測終了*/ printf("\n解析終了\n"); printf("Time = %lf sec\n", (double)(end - begin) / CLOCKS_PER_SEC);/*時間を出力*/ return 0; }

試したこと

パスワードをp,pa,pas,pass,passw,~,password2021
というように変えていっても、時間は0.000016から0.000019の範囲に収まってしまいます。

補足情報(FW/ツールのバージョンなど)

google colaboratoryを使用しています。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

jimbe

2021/08/02 09:27 編集

> 文字数が増えれば、本来は時間が変わっていくと思う 数文字の増減だけで何秒も変わると思われているとしたら、スケール感が違うのではないでしょうか。 やるからには何十何百何千文字~と可能なレベルで幾つも何度も試してそれをグラフにプロットする等してみては如何でしょう。 そもそも「解析にかかる時間を調べるプログラム」ですのにその結果を「正しい数値なのでしょうか?」と聞くのはおかしくありませんか。
kaina

2021/08/02 09:19

ご自分でデバッグしてみましたか? 以下のif文はjのループ内で変化しますか? if(p[i] == x[i]){
int32_t

2021/08/02 09:36 編集

未定義動作を踏んで、コンパイラにかなりコードを消されてませんか? 私の環境でコンパイルしてみたら、2重ループは消えてました。putchar * 20 しか残ってませんでした。
st-riefu274

2021/08/02 09:48

kainaさん、ご指摘ありがとうございます。 こちらの書き間違いで、正常に作動しています。
st-riefu274

2021/08/02 09:54

jimbeさん、ご意見ありがとうございます。 正しい数値という言葉は適切ではないですね。 ネットでパスワード解析にかかる時間を調べ、その時間に比べて明らかに異なっていたため、「正しいのか」と質問しました。(もちろん、素人が組んだもの程度で正確になるわけがないのですが。)
hoshi-takanori

2021/08/02 10:20

パスワードはハッシュ化して保存するのが鉄則であり、ハッシュ化されたものから元のパスワードを解析しないと意味ないのでは…。
jimbe

2021/08/02 10:57

> ネットでパスワード解析にかかる時間を調べ ということですので、その情報へのリンクもご提示頂いて、「リンク先では〇〇秒と出ているがこのコードでは・・・」という展開にされては如何でしょう。
episteme

2021/08/02 11:38

アルファベット26種/8文字として全組み合わせは 26^8 = 208x10^9 ひとつ 1ナノ秒でも 208秒かかります。
kansuke_t

2021/08/02 16:38

解析したパスワードを出力のprintfは計測終了のあとにしたほうがよいのではないでしょうか。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。