ドキュメントには記されていないが、OpenSSL::PKCS5 というクラスが存在し、OpenSSL の PBKDF2 実装にアクセスすることができる。ただし OpenSSL 自体の制約により、バージョン0.9.8kの時点ではハッシュ関数として HMAC-SHA1 しか使用できない。
keys = OpenSSL::PKCS5.pbkdf2_hmac_sha1("password", "saltsalt", 1000, 16) p keys.unpack("H*").join #=> "e9febff54bfce668fde301acc85563cc"
OpenSSL の将来のバージョン(1.0.0?)ではより汎用的な関数が追加される予定であり、Ruby からも利用できるようになるようだ。
keys = OpenSSL::PKCS5.pbkdf2_hmac("password", "saltsalt", 1000, 32, "sha256") # => OpenSSL 0.9.8k では NotImplementedError
このあたりがまだ中途半端なので、ドキュメントには記されていないのだろうか。
Ruby のリポジトリをチェックしてみると、2007年4月5日にまず trunk に対して追加され、その後1.8系にバックポートされたらしい。