木の葉を隠すなら森、という言葉があります。秘密の文字を隠すなら、文字の中に入れてしまうのが最もばれない方法かも知れません。とは言え単純に暗号化されているのではそこに秘密の文字があるのは明らかです。 今回紹介するz.jsは一風変わったライブラリで、テキストがまるでなくなってしまったかのように埋め込んでしまうソフトウェアになります。

z.jsのデモ

元々の文字列です。日本語も使えます。

全て/になってしまいました。もちろん復号化できます。

hello worldの文字がなくなっているかのように表示されています。

z.jsの使い方

最も基本的な使い方としては下のようになります。

var tmp='Something'+z.js('hello world')+' inside';
console.log(tmp,tmp.length); → Something‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‌‍‍‌‍‌‌‌‌‍‍‌‌‍‌‍‌‍‍‌‍‍‌‌‌‍‍‌‍‍‌‌‌‍‍‌‍‍‍‍‌‌‍‌‌‌‌‌‌‍‍‍‌‍‍‍‌‍‍‌‍‍‍‍‌‍‍‍‌‌‍‌‌‍‍‌‍‍‌‌‌‍‍‌‌‍‌‌ inside 168
console.log(z.js(tmp)); → hello world

見た目には出力されていませんが、実際にはSomethingの後ろに暗号化された文字が入っています。

console.log(z.js('hello <em>world</em>',false,'*'))
→ *‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‌‍‍‌‍‌‌‌‌‍‍‌‌‍‌‍‌‍‍‌‍‍‌‌‌‍‍‌‍‍‌‌‌‍‍‌‍‍‍‍‌‌‍‌‌‌‌‌‌‌‍‍‍‍‌‌‌‍‍‌‌‍‌‍‌‍‍‌‍‍‌‍‌‌‍‍‍‍‍‌‌‍‍‍‌‍‍‍‌‍‍‌‍‍‍‍‌‍‍‍‌‌‍‌‌‍‍‌‍‍‌‌‌‍‍‌‌‍‌‌‌‌‍‍‍‍‌‌‌‌‍‌‍‍‍‍‌‍‍‌‌‍‌‍‌‍‍‌‍‍‌‍‌‌‍‍‍‍‍‌**** *****

マスクに文字を指定することもできます。

var tmp=z.js('hides only *this* and *that*.',false,'**');
console.log(tmp) → hides only ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌*‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‌‍‍‍‌‍‌‌‌‍‍‌‍‌‌‌‌‍‍‌‍‌‌‍‌‍‍‍‌‌‍‍*** and ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌*‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‌‍‍‍‌‍‌‌‌‍‍‌‍‌‌‌‌‍‍‌‌‌‌‍‌‍‍‍‌‍‌‌***.
console.log(z.js(tmp)) → hides only this and that.

一部だけ消す指定も可能です。さらにパスワード指定もできます。

console.log(z.js(z.js('hello world','yay'),'nay')); → false
console.log(z.js(z.js('hello world','yay'),'yay')) → hello world

z.jsは文字として表示できない文字コードを使って暗号化、復号化を行っているようです。プログラミング言語のWhitespaceに近い感じに見えます。単純に暗号化、復号化ライブラリとしてみても面白いですし、表示されているようで表示されていないことで、セキュアに保てるかも知れませんね。

z.jsはJavaScript製、MIT Licenseのオープンソース・ソフトウェアです。

z.js—turns co_____ (in)vis____* kptl-co/z.js