人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

WinRarのリカバリーレコードはどういうアルゴリズムでデータの破損を修復しているんですか?;参考になる資料があれば教えてください。

●質問者: TG-IF
●カテゴリ:コンピュータ
✍キーワード:アルゴリズム データ リカバリー レコード
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● inagaki_hisato
●10ポイント

http://www.geocities.co.jp/Playtown/6671/gio.html

WinRAR用語集

リカバリレコードのサイズや書庫サイズあたりの数が示してありました。

ちょっとこれじゃ物足りないでしょうねエ・・・もともとシェアウエアだから、詳細は公開されていないのでしょうか?

◎質問者からの返答

うーん、もっと情報が欲しいですねぇ。

WinRarの作者さんは多分既存のアルゴリズムを元に

リカバリーレコードの機能をつけたような気がするんですが、どうなんでしょう。


2 ● kanetetu
●1ポイント

http://pc2.2ch.net/test/read.cgi/software/1013218113/

ようこそボボンハウスへ

ここの議論が参考になると思います。

◎質問者からの返答

具体的にはどこの辺りが参考になるんでしょう。


3 ● DenGaX
●60ポイント

http://www.hatena.ne.jp/1077454676#

WinRarのリカバリーレコードはどういうアルゴリズムでデータの破損を修復しているんですか?;参考になる資料があれば教えてください。.. - 人力検索はてな

URLはダミーです。

わかりやすく1ブロック=256バイトで説明します。ファイル全体のブロックごとのCRCをチェックサムとして付加します。これで、どこの部分のブロックが壊れているかを照合することが出来るはずです。

具体的なリカバリレコードはブロックごとのそれぞれの位置のデータを全てXORした値を格納します。たとえば、3ブロックあるデータのそれぞれの1バイト目が、00,ff,35だと、0x00^0xff^0x35で0xCAがリカバリレコードの1バイト目になります。

この状態で2ブロック目の1バイト目が0x7fになっていたとしましょう。

修復するときには、既にどのブロックが破損しているかはわかっているので、リカバリレコードの0xCAに対して、1ブロック目と3ブロック目のデータをxorします。

この場合、0xCA^0x35^0x00なので、0xFFとなり、2ブロック目のデータを修復できることになります。

方式としてはRAID5と同様のパリティアルゴリズムです。

RARが具体的にどのようなアルゴリズムでリカバリレコードを出しているかはわかりませんが、基本的にはこのように連続していないデータのXORを取って、正常な部分をのぞいていく方法だと思われます。

◎質問者からの返答

なるほど。回答ありがとうございます。

思っていたよりも簡単に実装できるんですね。

目から鱗です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ