表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
4/9

ファイルの全ビットを反転するJavaScript(とHTML)のコード

 ファイルの全ビットを反転させます。


 例えば、センシティブな画像や動画をクラウドにアップロードすると、グーグルのクラウドの場合はファイルを削除されたりアカウントを削除されたりするそうです。


 パソコンで画像や動画を全ビット反転させてからアンドロイド スマホやタブレットにコピーすれば、画像や動画がアンドロイド システムに勝手にクラウドに保存されるのを予防できます。

 ただし、原因は不明ですが動画には全ビット反転すると元に戻してもブラウザがエラーを発生させてしまう物が有りますし、サイズが大き過ぎる動画はブラウザーがメモリー不足エラーを発生させてしまいます。


 後は、USBメモリーで保存したい他人に見られたくない小説などのデータをすぐには見られないようにできます。


 ただし、全ビット反転は暗号化ではありません。


 さらに、AIなどの最近のデータ解析の進歩で全ビット反転はすぐに見破られるかもしれません。


 しかし、「『全ビット反転されているファイルである』と知られなければデータを視聴されないのでは」と思いました。

 そして、「『全ビット反転しているだけである』と知っていれば、プログラムの知識や技術が有れば、最悪の場合でも、検索して全ビット反転し直すプログラムを自作できる」と考えました。


 全ビット反転してもファイルのサイズは変わりません。


 全ビット反転を悪用しないでください。


 全ビット反転した画像や動画をクラウドにアップロードして、クラウドの運営に全ビット反転を見破られて画像や動画を検閲されてアカウントを削除されても自己責任です。


 不具合が有るかもしれないので利用は自己責任でお願いいたします。


 コピーする場合は、2文字の全角空白を4文字の半角空白に置換してください。

 .htmlファイルでUTF-8という文字コードで保存してください。

<!DOCTYPE html>

<html lang="ja">

  <head>

    <meta charset="UTF-8" />

    <title>ビット反転</title>

  </head>

  <body>

    <div>

      ファイル選択 <input type="file" id="file" />

    </div>

    <br />

    <div>

      <button type="button" id="flipBit">ビット反転</button>

    </div>

    <br />

    <br />

    <p id="message"></p>



    <script>



function $(id) {

  return document.getElementById(id);

}



function readAsArrayBufferSync(file) {

  return new Promise(function (resolve, reject) {

    var fileReader = new FileReader();

    fileReader.onload = function () { resolve(fileReader.result); };

    fileReader.onerror = function () { reject(fileReader.error); };

    fileReader.readAsArrayBuffer(file);

  });

}



$("flipBit").onclick = async function () {


  var files = $("file").files;


  if (files.length == 0) {

    $("message").innerHTML = "ビット反転するファイルを選択してください。";

    return;

  }


  $("message").innerHTML = "ビット反転中です……。";


  var file = files[0];


  var outFileName = file.name;


  if (outFileName.match(/^.+\.bin$/gi) != null) {

    outFileName = outFileName.replace(/\.bin$/gi, "");

  } else {

    outFileName = outFileName + ".bin";

  }


  var arrayBuffer = await readAsArrayBufferSync(file);

  var size = arrayBuffer.byteLength;

  var dataView = new DataView(arrayBuffer);


  for (var byteIndex = 0; byteIndex < size; byteIndex++) {

    dataView.setUint8(byteIndex, (~ dataView.getUint8(byteIndex)) >>> 0, /* リトル エンディアン */ true);

  }


  var blob = new Blob([new Uint8Array(arrayBuffer)], {type: "application/octet-stream"});


  var url = URL.createObjectURL(blob);


  var aTagElement = document.createElement("a");

  aTagElement.href = url;

  aTagElement.download = outFileName;

  aTagElement.click();


  URL.revokeObjectURL(url);


  $("message").innerHTML = "ビット反転を完了しました。";

};



    </script>

  </body>

</html>

評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ