2021-08-06 Ruby String#crypt is deprecated / unix-crypt gem
String#crypt (Ruby 3.0.0 リファレンスマニュアル)
Ruby の String#crypt
は 2.6 から非推奨となっている。
- Ruby 2.6 から非推奨になったため、引き続き必要な場合は string-crypt gem の使用を検討してください。
- crypt の処理は crypt(3) の実装に依存しています。 従って、crypt で処理される内容の詳細や salt の与え方については、 利用環境の crypt(3) 等を見て確認してください。
- crypt の結果は利用環境が異なると変わる場合があります。 crypt の結果を、異なる利用環境間で使用する場合には注意して下さい。
もし引き続きおなじ関数を利用したければ ruby-string-crypt gem を利用する必要がある。
プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ
String#crypt is now deprecated. Feature #14915
crypt(3) はなんかもう古くて脆弱なので消しましょう、ということで、2.6 では非推奨となりました。まあ、String クラスのメソッドにするのは現代から見たらやりすぎですよね。
互換レイヤとして string-crypt gem がリリースされています。
require "string-crypt"
mogest/unix-crypt
crypt の処理は crypt(3) の実装に依存しています。
とのことでカーネルに依存しないコードを書きたい。
この mogest/unix-crypt の実装は Pure Ruby 実装なのでカーネルのシステムコール crypt(3)
には依存しないかたちで crypt 関数を呼べて良さそう。
古い gem だけどそもそも crypt(3)
自体が古い実装だし Deprecated なので致し方なし、といったところ。