>>321
312じゃないが、勝手に解説
MDvipは、読み込んだデータを1バイト単位で足していって、合計を255で割った余りを取る関数。
もしも、データが改ざんされている場合、この計算結果が一致しなくなるから、改ざんを判断できる。
つまり、MDvip関数の戻り値が同じになるように改ざんされた場合は、改ざんを検出できない。

例)128,44,66,223という4バイトのデータを書き込む場合(全て10進数で説明)
128+44+66+223=461
461%255=206
保存するときは、4バイトのデータとともに、この206も保存する。

そして、読み込む際に、読み込んだデータから再計算する。
もしも、128、150、66、223のようにデータが改ざんされていたとすれば、
128+150+66+223=567
567%255=57
で、計算結果が一致しなくなる

248,164,81,223のような改ざんの場合
(248+164+81+223)%255=206
なので、こういったデータの改ざんの場合は検出できない

間違ってたら突っ込みよろしく