金曜日, 1月 09, 2026

Let's start JavaScript 93 
HTMLで文字化け生成&復元ツール

簡単な文字化け生成と復元ツールを作成してみました。憶えたことは直ぐに実行、そして直ぐに忘れる(^o^)

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>文字化け生成&復元ツール</title>
<style>
body {
padding: 20px;
max-width: 700px;
margin: auto;
background: black;
color: white;
}

textarea {
width: 100%;
height: 70px;
}

#result {
white-space: pre-wrap;
font-size: 1em;
margin-top: 10px;
}

</style>
</head>
<body>

<h3>文字化け生成 & 復元ツール</h3>

<textarea id="inputText"
placeholder="ここにテキストを入力"></textarea><br>
<button onclick="encodeText()">文字化け生成</button>&emsp;
<button onclick="decodeText()">文字化け復元</button>

<h3>処理結果</h3>
<div id="result"></div>

<script>
const KEY = 0x55; // XOR用キー(可逆化のため固定)
/*
XOR 暗号とは:
データ(平文)の1バイトごとに、
鍵(キー)とXOR演算を行うことで暗号化。
式で書くと:
暗号化:暗号文 = 平文 XOR 鍵
復号化:平文 = 暗号文 XOR 鍵
XORは同じ値で2回XORすると元に戻るので
暗号化と復号が同じ処理でできる。
よって暗号化としては処理が簡単な半面、
現代の暗号(AES・RSA等)と比較すると安全性は非常に低い。
*/

// 文字化け生成
function encodeText() {
const text = document.getElementById("inputText").value;
if (!text) {
document.getElementById("result").textContent =
"テキストを入力してください。";
return;
}

let encoded = "";
for (let i = 0; i < text.length; i++) {
// UTF-16コードを取得してXORで化けさせる
const code = text.charCodeAt(i) ^ KEY;

// 文字化けしそうな文字に変換
encoded += String.fromCharCode(code);
}

document.getElementById("result").textContent = encoded;
}

// 文字化け復元
function decodeText() {
const text = document.getElementById("inputText").value;
if (!text) {
document.getElementById("result").textContent =
"テキストを入力してください。";
return;
}

let decoded = "";
for (let i = 0; i < text.length; i++) {
// 再度XORすると元に戻る
const code = text.charCodeAt(i) ^ KEY;
decoded += String.fromCharCode(code);
}

document.getElementById("result").textContent = decoded;
}
</script>

</body>
</html>

実行直後の画面です。

テキストを入力して[文字化け生成]をクリックすれば・・・

サンプルテキストは、拙著「組版外伝」の冒頭部分です。
以下の「組版外伝」で全文を読むことができます。無料です。


文字化けデータが生成されます。

文字化けデータをコピペして[文字化け復元] をクリックすれば・・・

元のテキストに戻ります。
遊びですから、重要なデータに使わないように(^o^)