web-dev-qa-db-ja.com

古い形式の/ etc / shadow、saltはどこに保存されますか?

/ etc/shadowには、admin:YtChlvAGYzva2:16318:0:99999:7:::などのエントリがあります。元のパスワードを知っているので、どういうわけか同じハッシュを生成したいと思います。ただし、openssl passwd -crypt passwordを実行すると、実行するたびに異なる結果が得られます。ソルトが関係していると思いますが、元のハッシュの作成に使用されたソルトはどこにありますか?

編集:次のコマンドを使用して元のハッシュを取得しました:

openssl passwd -crypt -salt Yu password
4
JohnEye

ソルトと暗号化されたパスワードは両方とも文字列YtChlvAGYzva2にマッシュされます。

Shadow Password Howto から:

ユーザーがパスワードを選択するか割り当てられると、パスワードはソルトと呼ばれるランダムに生成された値でエンコードされます。これは、特定のパスワードを4096の異なる方法で保存できることを意味します。ソルト値は、エンコードされたパスワードとともに保存されます。

ユーザーがログインしてパスワードを入力すると、最初に保存されているエンコードされたパスワードからソルトが取得されます。

最近のシステムで見られる長いパスワード文字列 $を使用してハッシュを分離します 。しかし、古いシステムの場合は、マッシュポテトされただけです( Wikipedia ):

以前のバージョンのUnixは、パスワードファイル(/ etc/passwd)を使用して、ソルトされたパスワード(2文字のランダムなソルトが前に付いたパスワード)のハッシュを格納していました。これらの古いバージョンのUnixでは、ソルトは、ソルトされたパスワードのハッシュとともにpasswdファイル(クリアテキストとして)にも保存されていました。

あなたの例では、ソルトは「Yt」であり、暗号化されたパスワードは「ChlvAGYzva2」であると思います。文字通り、文字列の最初の2文字です。

7
gowenfawr