これは無効なソルトです。
ドキュメントにはそうは書かれていませんが、ソースは、基になる C 関数が NULLcrypt.crypt
を返す場合に が戻ることを明確にしています。POSIXではこれが許可されており、linux/glibcでは無効なソルトが指定された場合に明示的に許可されています。None
では、この塩の何が問題なのですか?
マンページの「Glibc ノート」セクションを読むと、文字列が暗号化メソッド ID として$1\$WDvKY5n\$
使用されます。1\
id の暗号化方法はありますが、 id の暗号化方法はあり1
ません1\
。さらに、salt 自体は ですWDvKY5n\
が、salt には set 内の文字のみを含めることができます[a-zA-Z0-9/]
。
ほとんどの場合、文字がエスケープされる何らかの方法でソルトを出力し$
(シェルの場合?)、実際の文字列の代わりにエスケープされたバージョンをコピーして貼り付けました。
それがうまくいかなかった場合は、使用するだけ$1$WDvKY5n$
ですべて問題ありません。
他の何かがうまくいかず、ソルトが不可逆的に文字化けしている場合は、正しく調べて、見つけたものを使用してください。
一方、これが他のプラットフォーム (の'$1d2n7Q0.r54s'
代わりに返さNone
れる) のユーザーに対して機能する理由は、BSD と FreeSec crypt
(Linux 以外のほとんどの POSIX プラットフォームのストック実装) の両方が、アンダースコアで始まらないソルトを従来の暗号として使用するためです。最初の 2 文字は任意の ASCII 値にすることができ、残りのソルトは単なるパディングです。