掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ハッシュ値の計算について (ID:115987)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>しかしそこで得られたハッシュ値は何度もいうようにファイルのハッシュ値ではありません。 >一般的なハッシュ取得ソフトと互換性はないですよね? ハッシュ関数の『一般的』という認識がボクとは全く違いました。 ボクにとって『ファイルのハッシュ値』という表現に一番近いのは >336KBの意味のない英数字の並びのハッシュ値 の方ですから。…が、まぁ、POTETO さんの要求が一般的なのかそうでないのかがボクに 理解できなくても、ボクはハッシュ関数に関してのベテランではありませんので、 最初から、コーディングの手法として考えられるパターンをいくつか示しているだけ です。認識の違いは結果に影響を与えていないと思いますので、問題は無いはずです。 必要な部分だけ抜き出していただけたらと思います。 >>例えば、データの分割が『1行ごと』でも良いなら >>は同じ意味になりますが、どちらでも特に問題は無いでしょう。 >>これでは1行ごとのデータの大きさにバラつきがあると非効率的だと思います。 >この辺の意味が分かりません > >>例えば、データの分割が『1行ごと』でも良いなら 思いきり FileSystemObject と間違ってますね。間違いです。しかも FileSystemObject なら .ReadLine ですから全く違います。別のオブジェクトで『1行ごと』に読む関数があるんです。 それを使っていると勘違いしてました。『なんかメソッドの書き方違うような気がするなぁ』 …とは思ってたのに、[VB6.0]時代のオブジェクトなので『書き方が変わったんだろう』 くらいにしか思わず、違うオブジェクトだと全然気づきませんでした。バカです。 >>は同じ意味になりますが、どちらでも特に問題は無いでしょう。 これは…特に解説がいるようにも思いませんが… MD5Crypto.ComputeHash(Buffer, 0, Buffer.Length) と MD5Crypto.ComputeHash(Buffer) が同じ動きをします。という事です。ただ、最後の1回が Buffer.Length じゃだめのようですね。これは前述の FileSystemObject との勘違いが 影響してまして、『1行ごと』読み込めるという事から分かると思いますが、 読み込んだテキストのデータが戻り値となるので余分なスペースは考えて いません。ってゆーか戻り値は String 型です。なんで気付かないのでしょう? 謎です。FileStream.Read の引数に与えた Buffer のサイズは変わらない ようですので、読み取られた合計文字数である戻り値の利用は必要です。 >>これでは1行ごとのデータの大きさにバラつきがあると非効率的だと思います。 これも…1行ごとにデータが読み取れないと意味不明です。当然です。 無視して下さい。 結局、ループを抜けて最後に計算されたハッシュ値のみ出力してたのを ループの中で計算した時点で毎回出力すればいい…と。それだけの修正で 良かったという結論になってしまいました。結果として得られる出力は、 『ファイルのデータを指定バイト数ずつ読み込んだ時、それぞれのデータの ハッシュ値を求め、それを羅列したもの』…となりました。 これは POTETO さんの要求を満たしていますか?。 満たしているなら最初の質問に戻って、ループのカウンタが進行状況。 中断はフラグでも用意してループの中でフラグを確認してフラグが立っていたら ループを抜ける…で1つのパターンとして実現できそうです。 都合が悪い部分がありましたら質問を続けて下さい。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.