世界を動かす技術を、日本語で。

スクリーム暗号

2025年9月18日原文(sethmlarson.dev)

概要

  • Unicodeの「A」バリエーションを活用した SCREAM CIPHER の紹介
  • アルファベットごとに異なる Unicode文字 へマッピング
  • Pythonによる エンコード・デコード関数 の実装例
  • 変換結果の例と 復号 の仕組み
  • 体験的に楽しめる 暗号化手法 の解説

SCREAM CIPHERとは

  • SCREAM CIPHER は、英語アルファベットをそれぞれ異なる Unicodeの「A」系文字 に置き換える暗号
  • 通常の stream cipher とは異なり、ユニークな「叫び」表現を実現
  • 各アルファベット大文字・小文字に対応する 特殊文字へのマッピング を定義
  • 例: "A" → "A" (ラウンドトリップ)、 "B" → "Á""C" → "Ă" など
  • 小文字にも対応するため、 辞書を拡張 している

Python実装例

  • CIPHER :英字からUnicode特殊文字へのマッピング辞書

  • UNCIPHER :逆変換用の辞書(特殊文字→元の英字)

  • SCREAM関数 :テキストを特殊文字に変換する関数

  • unscream関数 :特殊文字から元のテキストに復号する関数

    • def SCREAM(text: str) -> str:
          return "".join(CIPHER.get(ch, ch) for ch in text)
      
      def unscream(scream: str) -> str:
          return "".join(UNCIPHER.get(ch, ch) for ch in scream)
      

変換例と使い方

  • "SCREAM CIPHER" をSCREAM CIPHERで変換すると:
    • 変換後 :ǠĂȦẶAẦ ĂǍÄẴẶȦ
    • 復号後 :"SCREAM CIPHER"
  • 英文や単語を 叫び声のような特殊文字列 に変換可能
  • 元の英文への 復号も一対一対応 で容易

応用・注意点

  • 暗号 としての強度は低いため、実用的なセキュリティ用途には不向き
  • ネタや ジョーク暗号、テキスト装飾、SNS投稿などに最適
  • Unicode非対応のシステムでは 文字化けの可能性 あり

まとめ

  • Unicodeの多様性を活かした 遊び心ある暗号化手法
  • Pythonで簡単に実装・体験可能
  • 友達やSNSで 話題作り に活用可能

Hackerたちの意見

なんかよくわからないけど、あれこれいじってみた。

Ǎ ăẫẩǡǎắặȧ ǎạ a ăẵaậậặẩẳặ áặằẫȧặ ạẵặ ảẵẫậặ ẵȁầaẩ ȧaăặ! Aẩắ Ǎ aǎẩ'ạ ẳẫẩẩa ậẫǡặ.....

最後の単語はROT13だと思う!今、解読できるね!そして、最後から二番目は「like」かも。

256個以上のUnicode結合マークがあって、2バイトのUTF-8エンコーディングになってるんだ。いくつか選んで、俺が「zalgo256」って呼ぶエンコーディングを定義したよ。https://gist.github.com/DavidBuchanan314/07da147445a90f7a049... 結合文字がどんなに積み重なっても、1つのグラフェムクラスタとしてカウントされるから、アプリがグラフェムクラスタで文字列の長さを制限してるなら、そこに無限のデータを詰め込めるんだ。ただし、バイト表現では「たった」2倍のオーバーヘッドがあるけどね。残念ながらHNは一部のコードポイントをフィルタリングしてるから、ここではデモできないんだ。基準文字として「A」を選んだから、ダイアクリティカルマークが積み重なって、SCREAM暗号に似た美的感覚があるけど、ちょっとzalgoっぽい感じだね。

Gistのコメントでデモしたらいいかも!それ見てみたいな。

これで偶然にThe Oneを呼び出さないか心配?

HNは一部の結合文字をフィルタリングしてるの?それは変だね、シンボルや絵文字のブロックと比べると。あと、ユニコードの正規化付録を思い出したけど、正当なグラフエムクラスターは31コードポイント以下になるはずだって。「30の値は、言語的または技術的な使用に必要なものを大きく超えるように選ばれている。」

https://xkcd.com/3054/

ああ、これでスクリーム暗号の基準が2つできちゃうのか。https://xkcd.com/927/

ああ、これXKCDからのやつだ(2025年2月)。OPがそれを言わなかったのはちょっと変だね。

https://www.dcode.fr/scream-cipher-xkcd

このxkcdにやられちゃって、実装を進めてたら、アクセントコンバイナーがどんな文字でも使えることに気づいたよ。悪い暗号に悪いステガノグラフィーを追加するのは簡単だね。r̊e̝q̝ůěs̔t͞ p̊e̝a͞c̍e̊ t̠a̗lks

Hacker Newsで議論の続きを見る