質問
crypt(text,"k7")
調べてみると、「k7」はソルトのことらしいのですが、それが何を意味するのか、そこからどのような出力が得られるのか全く分かりません。誰か知っていますか?
解決
から crypt のマニュアルページ.
説明
crypt()はパスワード暗号化関数です。これは、キー検索のハードウェア実装の使用を阻止するために(とりわけ)バリエーションが意図されたバリエーションを備えたデータ暗号化標準アルゴリズムに基づいています。
key はユーザーが入力したパスワードです。
塩は、セット[a-za-z0-9./]から選択された2文字の弦です。この文字列は、4096の異なる方法のいずれかでアルゴリズムを混乱させるために使用されます。
他のヒント
他の答えはすべて正しいですが、これまでのところ誰も説明していません なぜ 塩はそこにあります。
ウィキペディアには良いページがあります 塩 そして レインボーテーブル, 、これが塩が存在する主な理由です。
ソルトがなければ、crypt は基本的に単なる一方向のハッシュ関数です。パスワードを受け取り、そのパスワードのハッシュされたバージョンを返します。 Rainbow
表は、このハッシュの「一方向」の性質を無効にし、元のパスワードを取り消すための最適化された方法を提供します。
ハッシュ化されたパスワードを取得できた場合 (データベースの悪用や、 /etc/passwd
または /etc/shadow
ファイル ) を使用すると、理論的には多くの人のパスワードを知ることができます。
塩は、ミックスに「ランダム」要素を追加します。ランダムなソルトを作成し、それをどこかに保存する必要があります(パスワードを付けても問題ありませんが、別の方が良いです)。レインボー テーブルの 1 セットでは不十分で、突然 65,536 セットのそのようなテーブルが必要になります (2 バイト ソルトの場合)。ソルトをパスワードとは別にしておくこともできるため、ハードルがさらに高くなります。
Salt は、同じパスワードを持つユーザーが同じパスワードを持っているように見えることを防ぐのにも役立ちます。ソルトは通常ランダムに選択され、ソルトが異なる場合、ハッシュされたパスワードは大幅に異なります。
いくつかのことを説明しているこのブログエントリも指摘します パスワードの基本, 、とても参考になりました。
、それはテキストの一方向ハッシュプロセスです。
地下室のための標準的な使用()は、パスワードを格納しています。もちろん、パスワードを保存する平文が非常に悪い助言されるであろう。その代わり、crypt()はパスワードのハッシュを生成するために使用されます。あなたのパスワード、暗号(を入力すると)それに適用され、その後、2つのハッシュが比較されます。
基本的に、地下室()の関数は、元が回復することはできません、そこからいくつかの新しいテキストに変換するテキストを翻訳することですが、二つの異なるキーに同じハッシュを生成する低い確率を有している。
ウィキペディアのFTW
ボトムライン:それは一方向ハッシュがtext
のcrypt関数は文字列として、キー、パスワードをとり、以下に説明される塩の文字列、および他の塩で始まる印刷可能なASCII文字列を返します。関数の出力与えられ、その出力を生成しますキーを見つけるための最善の方法は、キーの元の値が発見されるまで、キーの値を推測することであると考えられます。