人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

復号化可能な暗号化のアルゴリズムで以下のようなソースコードが社内にあるのですが、
アルゴリズムがわからないので、何をしているか理解できません。
http://gist.github.com/186594

お知恵をお貸しください。

●質問者: webrecdotjp
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:いるか アルゴリズム ソースコード 暗号
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 緑一
●35ポイント

換字式暗号の、IDのダイジェストを鍵とした周期換字ではないでしょうか。

http://ja.wikipedia.org/wiki/換字式暗号

◎質問者からの返答

回答ありがとうございます。近いですね。正解かも。

ざっくりとした解説をしていただけると助かります。


2 ● t-wata
●35ポイント ベストアンサー

与えられたIDを、暗号化するためのロジックですね。decryptはencryptの逆なので、encryptだけ説明します。

encryptサブルーチン

IDとsalt文字列と固定のkeyのMD5ハッシュ値を取得して、その先頭6文字をIDの後ろに付与し、_encodeサブルーチンに渡す

_encodeサブルーチン

saltの値を0とする(上記のsaltとは別。ただの数字)

_makeCodeTableで換字式暗号の対応表を作成

入力文字列を先頭から1文字ずつ取り出し、

その文字がテーブルに出現する順番に、saltの値を足した値を計算

上記値に対応する値をテーブルから取り出し置換

saltの値に上記の値を足す

というのを入力文字列に対して繰り返し、上記にて置換済み文字列を末尾から1文字ずつ取り出し、同じロジックを再度実行(つまり2回置換する)

最後に、最終的なsaltの値に対応する文字を末尾に追加


decryptは、入力文字列の末尾の1文字から最終的なsaltの値が分かるので、上記と逆のロジックで元の文字列に戻せます。


これはBase64などのただの符号化と同じで、tableが分かってしまうと(keyとか最初に与えたsaltとは無関係に)IDが分かってしまうため、安全ではありません。

◎質問者からの返答

ありがとうございます。助かりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ