▼経緯
JavaScriptのゲームや占いなどのサービスは、HTMLソースを見ると答えや続きが速攻で見えてしまうため、それをなんとかしたかった。
そこで暗号化(難読化)を考えた。一番シンプルかつ容量増えなそうなのは文字コードズラし。
しかし文字コード表って意外に「?」で歯抜けしてて文字化け多く、使い物にならないことが判明・・!
次にシンプルそうなURLencodeは容量が6~8倍くらいに膨らんでしまうことが判明し断念。。
次に考えたのがBase64エンコード。これなら容量が2~3倍少々(URLencodeの半分程度)で済み、容量と開発コストが膨らむ外部ライブラリもいらないため個人開発ゲームなら現実的と判断。
パソコンの大先生未満の多くの一般人ならハッキングも不能w 処理は実に簡単で下記。単純なatobやbtoaだけでは動かないので注意。
//暗号化
function encrypt(s){
return window.btoa(unescape(encodeURIComponent(s)));
}
//複合化
function decrypt(s){
return decodeURIComponent(escape(window.atob(s)));
}
|
使い方としては、あらかじめこのページで暗号化した文字列データを用意し、それをゲーム用HTMLファイルにコピペして必要タイミングで複合化するだけ。
JavaScript以外でも、上記の関数に対応する処理を書けば色々使えると思います。
もうひと手間加えたい人は、暗号化後文字列の前後や間に任意の文字列挿入+ランダム文字列を挿入すれば、割と手堅いと思います。
①暗号化したい文字列
②暗号化結果(コピペ用)
③複合化結果(一応確認用)