可逆式暗号化関数を作る

INDEX PAGE

可逆式暗号化を作る


データベースにデータを格納する時
ログイン画面用のパスワードは
照合さえできればよいので不可逆式の暗号化を採用が良いと思います。
具体的にはStringクラスのcryptを利用するのが良いと思います。
http://www.ruby-lang.org/ja/man/html/String.html#crypt
これで、システム管理者も含めて誰もデータベースのデータを読めないはずです。


しかし、住所・電話番号のような
データベースにそのまま入れたくないけど
かと言って、復号できないとシステムを作れないような場合
これを実現するにはOpenSSL用のライブラリーを利用するのが良いようです。
http://www.ruby-lang.org/ja/man/html/OpenSSL_Cipher_Cipher.html

ちょっとこのまま各ソースで実装するのはめんどくさいので
下記のようなユーティリティを作っておくと便利です。

require 'openssl'

class Cipher

 PASS_WORD = "hogehoge"

 def self.encode( targetString )

  encodedWord = ""

  enc = OpenSSL::Cipher::DES.new
  enc.encrypt
  enc.pkcs5_keyivgen(PASS_WORD)

  encodedWord = enc.update(targetString) + enc.final

  return encodedWord

 end

 def self.decode( encodedString )

  decodedWord = ""

  dec = OpenSSL::Cipher::DES.new
  dec.decrypt
  dec.pkcs5_keyivgen(PASS_WORD)
  decodedWord = dec.update(encodedString) + dec.final

  return decodedWord

 end

こうしておくと、他のソースで簡単に可逆式の暗号化・復号化が利用できます。

name = "Takeshi Yamada"

$stdout.print name

sai = Cipher.encode(name )

$stdout.print sai

sai = Cipher.decode(name )

$stdout.print name

一度暗号化された文字列が復号化されるのがわかります。


INDEX PAGE