例:hina1981とhina1982に「pass」というパスワードを設定したときの/etc/shadowファイル
hina1981:$1$lc6eEU3Z$7tlNIqq7xN7yMmzof8eD3.:13420:0:99999:7:::
hina1982:$1$alflJd8x$YEM3dR6tPQL1SRVtjALez1:13420:0:99999:7:::
続きはコメント欄を見てください。
salt(塩…味付けを変える調味料みたいなイメージだからですかね)という乱数と込みでハッシュ計算されるからです。
http://piza.2ch.net/log/unix/kako/957/957802927.html
2ちゃんの過去ログですがここに説明されています。
http://www.icepp.s.u-tokyo.ac.jp/~sensha/software/Linux/JF/Shado...
ユーザがあるパスワードを決めた場合、このパスワードはランダムに決められた salt と呼ばれる値を用いてエンコードされます。こうすることで一つの文字列がエンコードされた結果として取りうる結果は 4096 通りになります。salt の値はエンコードされたパスワードと一緒に記録されます。
salt(塩…味付けを変える調味料みたいなイメージだからですかね)という乱数と込みでハッシュ計算されるからです。
http://piza.2ch.net/log/unix/kako/957/957802927.html
2ちゃんの過去ログですがここに説明されています。
http://www.icepp.s.u-tokyo.ac.jp/~sensha/software/Linux/JF/Shado...
ユーザがあるパスワードを決めた場合、このパスワードはランダムに決められた salt と呼ばれる値を用いてエンコードされます。こうすることで一つの文字列がエンコードされた結果として取りうる結果は 4096 通りになります。salt の値はエンコードされたパスワードと一緒に記録されます。
ありがとうございます。
ということは、同じ名前のユーザアカウントを4097個作ったら、最低一つはハッシュ関数の設定値が同じになるということですね。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/crypt.3.html
こちらの 説明およびGNU拡張の欄に詳細があります。
先頭の数文字が再ハッシュ化の為のキーになっているわけですね。
ありがとうございます。
Cのヘッダファイルとして用意されてるのですね。
時間があったら、プログラムを作ってみたいと思います。
shadow - 暗号化されたパスワードファイル用ルーチン
http://www.linux.or.jp/JM/html/shadow/man3/shadow.3.html
>MD5では、一つの文字列から複数のハッシュ値を生成することが
>可能なのでしょうか?
MD5は文字列をハッシュするだけ約束なので
違う文字が生成できない。
違う文字を生成するために、shadowの一部に重複を
防止するためにsaltと呼ばれる部分をランダムな
値に書き換えを行うので、同じになる確率はまずない。
ありがとうございます。
ログイン時に入力したパスワードがpassであったとしたら、
aapass
abpass
acpass
という文字列をひたすら(4096回)MD5で変換し、shadowファイルの値を比べているのですね。
saltがaaでshadowファイルに登録された人と、ZZで登録された人だと、後者の方が(ほんの少しでしょうが)ログインが遅くなりそうなカンジですが……。
ありがとうございます。
ということは、同じ名前のユーザアカウントを4097個作ったら、最低一つはハッシュ関数の設定値が同じになるということですね。