日本語文字列で対象文字列を暗号化

キーとなる簡単な日本語で文字列を施錠(暗号化)します
ホームへ

文章を暗号化するには

先に文書を入力した後に

「施錠」

をクリックすると
鍵ワード入力枠と実行ボタンが表示されるので鍵となる日本語文字列を入力してから 「実行」ボタンをクリックしてください。 内部では「文→36」が初めに実行され変換後英数文字列に対して鍵ワードを 使って暗号化し結果を表示します。

「解錠」

はその逆で暗号化された英数文字列を鍵ワードを使って元に戻し
「36→文」が内部で実行され元の文章が表示されます。
[あいうえお]を文から36進数へ変換すると
→36[7wc0pl8vmhw6b5y60eqc8a2sqioi0y4q]
となり34進数で見てみると
→34[1cfj1c1fa0anc0ane0ang0ani0ankanmi]
なんとなく「あいうえお」が見えるでしょ?
このままでは変換手順の逆を辿れば元の文に戻すことは可能です 暗号化するために鍵となるワードを使用します [あいうえお]を[暗号鍵]で
施錠(暗号化)すると
36[7wc0pl8vmhw6b5y60eqc8a2sqioi0y4q]が
36[3g459l8syl22u639vle73y9ntnp1w482]に変化し施錠完了です

ボタンは他にも英数字文字列を前提として

「36→35」

36進文字列を35進文字列に変換
[SHIFT]を押しながらクリックすると36進数を34進数に変換

「35→36」

35進文字列を36進文字列に変換
[SHIFT]を押しながらクリックすると34進数を36進数に変換

「左↺」

文字列を左へシフトし押し出された先頭文字を
最後尾に追加します

「右↻」

文字列を右へシフトし押し出された後尾文字を頭に追加します

「⇕反転」

縦方向反転します(0⇔Z、1⇔Y、2⇔X・・・)

「⇔反転」

文字列を反転します(前後入れ替え)

「1個↑」

各文字を1キャラクタアップします(0→1、1→2・・・Z→0)

「1個↓」

各文字を1キャラクタダウンします(Z→Y、Y→X・・・0→Z)

「半角英数字以外削除」

スペースや改行などを含め半角英数字以外を削除します コピペなどで施錠された文章を貼り付けると改行やスペースが混じることがあるので それらの削除を目的にしてます。日本語などもすべて消えるので注意して使ってください

「全選択」

文字列全体を選択状態にします

「全コピー」

文字列全体をコピーします

文から36進数へ変換解説

文から1文字ずつ取り出しその文字コードを
4桁の34進数に変換して並べ
「あ」の文字コードは10進数で「12354」34進数で「0anc」
全ての変換完了後に文字コードを全て足したチェックサムを
その先頭に34進数文字列で追加し最後尾に「anmi」識別子を追加
「あいうえお」は[1cfj1c1fa0anc0ane0ang0ani0ankanmi]
その全体をひとつの34進数の大きな数字として認識させ
今度はそれを36進数に変換する結果として英数字だけの
36進数文字列が得られ
[7wc0pl8vmhw6b5y60eqc8a2sqioi0y4q]となり変換完了です。
余談ですが「施錠」や「文→36」を同じ文書で試すと毎回違う36進文字列になると思いますが これは34進文字列を作る時に先頭に1文字ランダムに加えているためです 何もしないと先頭が0になる場合あり36進へ変換後に34進に戻した時0の文字は 再現されず1文字少ない状態になりその後の4文字ずつの処理がエラーになります。 なので1文字0以外を先頭に足しています

施錠と解錠解説

施錠は文と鍵ワード両方を36進数へ変換した後に文の36進文字列に 鍵ワードの36進文字列の1文字ずつを数字として足算し改めて36進に 戻します
あいうえお→36[7wc0pl8vmhw6b5y60eqc8a2sqioi0y4q]
暗号鍵→36[hplgpotsfv7pvc75x9z7opyy]
足算で36[3g459l8syl22u639vle73y9ntnp1w482]となる
足算結果を34進数に変換34[k9guiw2swuftmivu6jwm8c9d34sttt1k]しても意味をなしません。
実際の足算はもう少し複雑ですが基本的には足算のみです
解錠は施錠の逆なので暗号文(36進文字列)から鍵ワードの36進文字列を 一文字ずつ引算します、結果として元の36進文字列になるので それを36進数から文へ変換して元文書が完成です
鍵ワードが違っていたり暗号文が1文字でも違えば識別コード不一致となり解錠はできません。
仮に力業の総当たり(文字コード全てを試す)には1文字の鍵だったとしても1万回以上廻さないと正解には 当たらない英数字(100種類以下)だけのパスワードと違って全角文字は1万種類以上あるので、 これが2文字なら1万×1万、3文字なら1万×1万×1万、10文字なら・・・・・なので解読はほぼ不可能です。
28000文字で施錠に10秒程度、解錠にも10秒程度かかりました。1万文字でも1秒程度です。 どこが限界なのかは試す勇気がありません。ちなみに36進の桁数にすると4倍になるので 28000×4で11万桁以上になりますね。

これ暗号かツール使ってみてください