解説
パリティビットより少し強力なのがチェックサムです。送るデータの数値をすべて足し合わせ、その合計(ここでは256で割った余り)を一緒に送ります。
受信側は届いたデータからもう一度合計を計算し、送られてきたチェックサムと比べます。一致しなければ、途中でデータが化けたか改ざんされたと分かります。ここでは1つの値を書き換えて、合計が変わり検出できることを確認します。
書き方
・def checksum(values): チェックサムを計算する関数を定義。 ・sum(values) % 256: 合計を256で割った余りをチェックサムとする。 ・return 値: 関数の戻り値を返す。 ・data[:]: リストの浅いコピーを作り受信データとする。 ・if cs == cs2: 送信時と再計算のチェックサムを比較して誤り・改ざんを判定。
書いて動かす
この回の課題
データの合計(mod 256)をチェックサムとして一緒に送り、値を改ざんして不一致で検出できることを確かめてみよう。
コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。
自分のPCでも続けてみませんか
Windows版 InsightPy は Python を同梱しているので、環境構築なしで同じコードを書いて実行できます。 書いたコードを保存しておけるほか、ステップ実行で変数の変化を1行ずつ確かめられます。 個人の学習や私的な目的でのご利用は、31日目以降も無料です(スクリプトの保存は10本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。