• ベストアンサー

ハッシュ値について

FEX2053の回答

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7989/21362)
回答No.3

以下、wikipediaの記述で、これがわかりやすいかと思います。 「CRC値は、メッセージとの1対1の対応が不可能(メッセージより常に情報量が少ないため)という点は、暗号学的ハッシュ関数によるハッシュ値(以下、単に「ハッシュ値」とする)と同じだが、ハッシュ値はそれでも100ビット程度以上の大きさがあるのが普通であり、また、内容が異なるのに同じハッシュ値となるようなメッセージを偽造したりするのは容易でない(という特性が一般に暗号学的ハッシュ関数には必須である)。それに対し、CRC値は一般に小さく、さらには消失訂正という技法によって同じCRC値になるメッセージを容易に作成可能であり、元のメッセージを少しだけ改変したものでもCRC値を同じにできる。なお、元のメッセージに非常によく似た(ごく低い通信エラーと同程度の差異しか無く、攻撃者の意図で決められたものではなくランダムに変えられたような)メッセージであれば、CRCの設計上、大きく異なるものにはなる。」 要は、CRCは小容量のデータが目的で、改ざんも容易なために「単純なデータ送信時の誤り確認」にしか使えないのに対し、ハッシュ値は大容量のデータ比較が目的で改ざんが難しい・・・という差があります。 CRCは基本的に処理が簡単なので、計算速度の遅いコンピュータでも容易に使えたのに対し、ハッシュ値は計算が複雑でパワーのあるコンピュータでしか使えなかったという問題もあり、CRCによる符号訂正は現在「レガシー技術」の世界でしか使ってないと思います。

noname#249103
質問者

お礼

回答ありがとうございます よくわかりました 暗号に興味を持って本を読んでいるうちにハッシュ値という言葉にたどり着きました また何かの機会がありましたらよろしくお願いします

関連するQ&A

  • 現代における経済の問題についての入門書

    経済の仕組みについての入門書ではなく、 現代における経済の問題を分かりやすく解説した入門書のおすすめを教えて下さい。

  • INIファイルの改ざんを検出する

    自作でソフトウェアを作成しているのですが、その中でINIファイルに設定を書き出しています。 しかし、実体のあるテキストファイル(INI)で保存すると、簡単に改ざん(ユーザーの意図していない悪質な改ざん)をされてしまうことになります。 ソフトウェアの性質上、INIファイルに保存されているデータをevalすることがあるのですが、 もしそこが改ざんされていれば大変なことになりかねません。 そこで、INIファイルの改ざんを検出、または改ざんされないようにしたいのですが、どのような手段があるでしょうか。 自分で考えたのは、 アプリケーション終了時に ・INIファイルのMD5ハッシュを取得、それを記憶。 ・INIファイルのタイムスタンプを記憶。 をして、次回起動時に現在のINIファイルのMD5,タイムスタンプと比較して、改ざんを検出するというものです。 ですが、この方法だと結局はMD5のハッシュ値やタイムスタンプをどこかに保存しておかねばならず、 そうなるとそれらも改ざんされる恐れがあって結局意味を成さなく成ってしまいます。 どうすると、一番効率的で安全でしょうか。 レジストリも結局は改ざんされてしまいます。 そもそも、完全に改ざんを防ぐことはできないだろうと思っていますので、 出来るだけ改ざんされにくい方法、または改ざんを検出しやすい方法をご教授いただければと思います。 様々な意見を頂きたいので、既に回答が出ている場合も追加で回答頂けると幸いです。

  • 接続方法の違い?

    初めまして。このカテゴリでは初めて質問をさせていただきます。 私は名古屋在住で、BIGLOBEのダイヤルアップ接続「使いほーだい」を使用しています。 パソコンが古いもので、買い換えを機に接続環境も光やADSL等の高速回線に変えようかと考えています。 NTT西日本のサイトにおいて、伝送損失等のチェックをしてみたところ、NTT収容ビルまでの距離が3150m、伝送損失50dbという結果がでました。これではとても無理だと思っていたところ、BIGLOBEの光接続一覧の中に「アクセスコミュファ」とあり、回線キャリアがNTT西日本ではなく、中部電力となっているのです。 中部電力なら、自宅から500mもないところにあるのですが…。 回線キャリアが「NTT西日本」と「中部電力」ではどう違うのか、それによる伝送損失も変わってくるのかを教えていただければ幸いです。 また、ダイヤルアップでの接続の仕組み(NTTの収容ビルを介して接続するのかどうか)も教えていただければ幸いです。 よろしくお願いします。

  • Windowsタスクでのネットワークの検出方法

    皆さんの投稿をいつも参考にさせて頂いております。 1つ質問があります。 普段、どのネットワークには繋がっていないノートPCがあります。 そのノートPCは、ダイアルアップ(RAS)にて、ネットワークに接続するのですが、 その接続に条件があり、接続先のサーバとの時刻誤差が±2分以内でないと ダイアルアップ接続が確立されないのです。 そこで、ダイアルアップが接続する度に時刻同期をさせ、 次回ダイアルアップ時に備えたいと考えております。 理想の仕組みとしては、schtasks コマンドにてネットワーク検出時に 時刻同期プログラムを走らせる。という事をしたいのです。 (時刻同期は、Windows標準の時刻同期は使用できない環境なので、あるプログラムを起動させて、時刻同期をする予定です) 長くなってしまいましたが、要約すると WindowsXPのタスクでネットワーク検出をする事が出来ますか? という質問になります。 皆さんのお知恵をお貸し下さい。よろしくお願いします。

  • Lovgateに感染してしまいました

    事務所のネットワークがLovgateに感染してしまいました。 事務所のダイアルアップがかかりっぱなしになったり、 再インストールしたWindows2000が1時間後には再感染 したりともうむちゃくちゃです。 事務所のネットワーク内には10台ほどのPCがありまして Windows98と2000です。感染はフリーのAVGで検出しま した。 調べると、共有ファイルを利用して感染する・・と書いて ありましたのでLAN経由ですべてのPCに感染してる恐れが あります。 しかしダイヤルアップのためにWindowsUpdateが難しい 状況です。しかしアップデートなしでは駆除しても すぐに再感染してしまい、収集がつかない状態です。 ウィルスに詳しい方でしたら、どのように対応されるの でしょうか・・アドバイスなどいただけたら幸いです。

  • シリアル通信の原理について

    シリアル通信の調歩同期式は、「伝送を開始する際にまずスタートビットを送り、続いて一文字分のデータ(7~8ビット)、パリティビット、最後にストップビットを送る。」と多くのウェブサイトで解説されていると思います。 またビットレートも1200bps/2400bps/4800bps/9600bps・・・など複数あると思います。 上記仕様については理解しているのですが、これらを実現する具体的な仕組みが分かりません。 具体的には、 1.受信側は送信側のビットレートをどのように知るのでしょうか? 2.同様にデータが7ビットと8ビットのどちらであるかをどうやって判断するのでしょうか? 3.受信側は送られてきたデータのビットを1バイト毎にレジスタやメモリに格納すると思うのですが、1つのプログラムにつきどこからどこまでが該当のデータであるかをどうやって判断するのでしょうか?(送られてくる全体のデータサイズをどうやって知るのでしょうか?) ググっても上記の具体的な解説が見つからず、理解できずにおります。 ご回答どうぞよろしくお願いします。

  • 宗教を脳科学から分析した書籍を教えてください

    脳の機能や宗教などを専門的に解説した良書を教えてください。 うつ病や強迫性障害、ストレスなどといった脳の機能の仕組みが、宗教の成り立ちや発展、儀式などと密接な関わりがあるのではないかと感じています。 釈迦は悟りを開いたといわれていますが、悟りを開くとは、うつ病が寛解した瞬間のことであるとどこかで耳にしたことがあります。 先日、仏式の葬儀に出る機会があったのですが、死者を前にして弔う儀式や、邪念や不安を除くために念仏・真言を繰り返し唱える行為など、人間の脳の機能の仕組みと関係が深いのかなと感じます。 畑ちがいということで専門家が互いに境界をおかすことは難しいとは思うのですが、例えば仏教やキリスト教、イスラム教などを現代の精神医学や脳機能などの見地から専門的に解説された書籍やコンテンツなどはありませんでしょうか。うさんくさいものもたくさんあるとは思うのですが、著名な専門家や識者、論文などお教えいただければ幸甚です。 それぞれの学説や簡単な論旨などもご紹介いただけるとうれしいです。 何とぞよろしくお願いします。

  • Outlookメールが使えなくなってしまいました。

    Outlook Exを利用しているのですが、迷惑メールが多いためメールアドレスを変更しました。 アドレスの変更に伴ってメールソフトの設定などは行いましたが、Outlookを立ち上げると「ダイヤルアップ接続」のタグが出て「接続先」「ユーザー名」「パスワード」の入力画面になります。 入力後、接続をすると「ダイヤルしています・・」というメッセージが表示されるのですが、 しばらくたつと「モデムを検出できませんでした。モデムは使用中、電源が入っていない、または正しくインストールされていません。」というメッセージが表示され接続が中断されてしまいます。 パソコン初心者なので自分なりに調べてはいるのですが、用語自体が難しく感じなかなか解決に辿り着きません。。 初心者の私にも分かりやすく解説してあるサイト、もしくはご説明いただける方がいらっしゃればご教示ください。 宜しくお願いいたします。

    • ベストアンサー
    • ADSL
  • 以前ADSLが繋がらなかったのですが。。

    NTT基地局から3530m、伝送損失50dBです。 (NTTのHPで確認) 1年以上前にフレッツADSLを導入してみたのですが やはり遠いためか、うまく繋がりませんでした。 ずーっとADSLは無理と思い、未だにダイアルアップで メールのみのユーザーでした。 で、本日NTT116番になにか良いサービスがないかと 思って相談をしたら ADSLを勧められ、「遠いし、1年前ほどはダメだった」 と伝えたのですがNTTの方は「今は違うから大丈夫」 というのです。 ADSLの仕組みが変わったわけでもないと思うのですが 1年前はダメで、今は大丈夫ということがあるのでしょうか? それに、サービスタイプも「1.5M」よりも「モア」を 勧められました。 以前の認識ですと、距離が2km以内の確実に繋がる人は 1.5Mより8Mの方が快適なスピードが出るけれど 3km以上にもなるような人は、「早くてもどうせスピード が出ないのだから1.5Mで充分」と思っています。 やはり3.5kmも離れていたらADSLは無理なのでしょうか それとも試してみる価値はあるのでしょうか? よろしく回答お願いします。

    • ベストアンサー
    • ADSL
  • ハッシュのハッシュを実現したい。

    ハッシュのハッシュを行いたいですがうまくいきません。 ◆正しい例 %ultraman = ( TARO => { cpu => "Celeron(266MHz)", memory=> "32MB", hdd => "4.3GB", }, JACK => { cpu => "Pentium2(333Mhz*2)", memory=> "128MB", hdd => "9GB*4", }, ); $name = "JACK"; $item = "cpu"; print "\$ultraman{$name}{$item}=[$ultraman{$name}{$item}]"; exit(0); __END__ ◆このように使えたら便利(要はハッシュの代入でハッシュのハッシュを実現したい) %a=(); %b = ("cpu"=>"aaaa", "memory"=>"bbbb"); $a{'JACK'} = %b; #---> このように代入したい $name = "JACK"; $item = "cpu"; print "\$a{$name}{$item}=[$a{$name}{$item}]"; exit(0); __END__

    • ベストアンサー
    • Perl