可逆式暗号化関数を作る
可逆式暗号化を作る
データベースにデータを格納する時
ログイン画面用のパスワードは
照合さえできればよいので不可逆式の暗号化を採用が良いと思います。
具体的には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.finalreturn decodedWord
end
こうしておくと、他のソースで簡単に可逆式の暗号化・復号化が利用できます。
name = "Takeshi Yamada"
$stdout.print name
sai = Cipher.encode(name )
$stdout.print sai
sai = Cipher.decode(name )
$stdout.print name
一度暗号化された文字列が復号化されるのがわかります。