/ etc/shadowには、admin:YtChlvAGYzva2:16318:0:99999:7:::
などのエントリがあります。元のパスワードを知っているので、どういうわけか同じハッシュを生成したいと思います。ただし、openssl passwd -crypt password
を実行すると、実行するたびに異なる結果が得られます。ソルトが関係していると思いますが、元のハッシュの作成に使用されたソルトはどこにありますか?
編集:次のコマンドを使用して元のハッシュを取得しました:
openssl passwd -crypt -salt Yu password
ソルトと暗号化されたパスワードは両方とも文字列YtChlvAGYzva2にマッシュされます。
ユーザーがパスワードを選択するか割り当てられると、パスワードはソルトと呼ばれるランダムに生成された値でエンコードされます。これは、特定のパスワードを4096の異なる方法で保存できることを意味します。ソルト値は、エンコードされたパスワードとともに保存されます。
ユーザーがログインしてパスワードを入力すると、最初に保存されているエンコードされたパスワードからソルトが取得されます。
最近のシステムで見られる長いパスワード文字列 $を使用してハッシュを分離します 。しかし、古いシステムの場合は、マッシュポテトされただけです( Wikipedia ):
以前のバージョンのUnixは、パスワードファイル(/ etc/passwd)を使用して、ソルトされたパスワード(2文字のランダムなソルトが前に付いたパスワード)のハッシュを格納していました。これらの古いバージョンのUnixでは、ソルトは、ソルトされたパスワードのハッシュとともにpasswdファイル(クリアテキストとして)にも保存されていました。
あなたの例では、ソルトは「Yt」であり、暗号化されたパスワードは「ChlvAGYzva2」であると思います。文字通り、文字列の最初の2文字です。