開発者の方なら一度は、「ゲームの設定ファイルやセーブデータ、あるいはちょっとした通信内容を、そのまま見せるのは抵抗があるけれど、ガチガチの重い暗号化を組み込むほどでもない……」という場面に遭遇したことがあるのではないでしょうか。
そんな時に「ちょうどいい」難読化・データ保護モジュールを自作してみました。
リポジトリ (GitHub): https://github.com/BLUE000/TransCipher-Dist.git
どんなツールか
この「TransCipher」は、新しい暗号化アルゴリズムを開発したものではありません。 既存の信頼された方式(AES-GCM、Base64、バイト反転、パーセントエンコーディング等)をパズルのように組み合わせる、「難読化フレームワーク」 です。
工夫点
秘密鍵から変換レシピ(手順書)を決定論的に生成
- 同じ鍵を使えば、常に同じ手順で多段変換が行われる。
- 鍵が変われば、変換の順番や組み合わせ(AESを先にやるか、Base64を後にやるか等)がガラリと変わる。
これにより、アルゴリズムがバレても「鍵」がわからなければ、どのような順番でデータが加工されたかの解析コストを大幅に引き上げできます。
- サーバー(PHP)とアプリ(C++)で連携できる。
C++(DLL/CLI)と PHP の両方で同じロジックを実装したので、アプリで難読化してサーバーで復号といった運用もできます。
用途
内部で AES-GCM を採用しているため一定の強度は確保していますが、個人情報や決済情報のような「万が一にも漏洩が許されないデータ」の保護を目的としたものではありません。
あくまで:
- ゲームのセーブデータや設定ファイルの難読化
- 自作ツール間の通信内容を「とりあえず見えなくしたい」
- リバースエンジニアリングの難易度をちょっと上げたい
といった、状況を想定しています。
その他
データフォーマットはこんな感じです。
## 免責事項
このソフトウェアは現状有姿で提供されます。作者はこのソフトウェアの使用によって生じた、いかなる損害についても責任を負いません。
ソースコードは非公開ですが、公開APIを通じた利用は問題ありません。
※以下、GitHubにも記載がありますが、後から追記しました。
クレジット表記について(開発者向け)
本ソフトウェアを自身のアプリケーションに組み込んで配布する場合、アプリケーション内の「バージョン情報」や「ライセンス一覧」等に、以下のいずれかの形式で権利表記を行ってください。
表記例 1(シンプル):
Includes TransCipher, Copyright (c) 2026 BLUE000.
表記例 2(サードパーティ・ライセンス項目として):
This software uses TransCipher library.
Copyright (c) 2026 BLUE000.
※ アプリケーション全体の著作権者(あなた)と、ライブラリの著作権者(BLUE000)が区別できるよう、混同を避ける形で記載してください。
その他表現など
5/18時点で
FIPS/NIST規格、輸出規制に完全準拠・抵触回避するために表現を難読化に一貫させました。
あくまで難読化という扱いになります。
この記事が良かったら
BLUE さんへの応援になります

Comments(0)
No comments yet
Log in to leave a comment
Log in to comment