2010-12-16 13 views
2

私はいくつかのコードを作成していますが、ある時点でデータベースに保存するパスワードを準備しています。おおまかな擬似コードでは、以下を実行しています。パスワードハッシュを14文字に切り詰めるのはなぜですか?

encrypted_password = truncate(hash(password), 14) 

Ie.パスワードのハッシュを計算し、ハッシュを14文字に切り捨てます。


このようにアプリケーションがハッシュを切り捨てる理由を知っている人はいますか?それは私が気付いていないいくつかのかなり標準的な種類のパスワードストアと互換性があるようにすることを意図しているので、非常に慎重です。

(..これはパスワードを格納するための素晴らしい方法、無塩漬けなどではないことを無視してください)

+0

それをデータベースに格納している場合は、誰かがそれを設計した人が 'char(14)'列を作成しました...なぜ私は知らないのですか? – Mikhail

+0

違いがありますか? – Mchl

+0

万が一、このAOLですか? – Arafangion

答えて

2

私はいくつかのレガシーシステムとの互換性を維持することであると考えることができる唯一の理由。事実、セキュリティを犠牲にして意識的な決断を下すことは、私が考えることができる唯一の理由です。

古いcrypt()関数では8文字のパスワードしか使用できないなど、非常に古いUNIXのボックスがあるネットワークを考えてみましょう。それらが他のシステムに対して認証を実行するために、または他のシステムがそれらのレガシーUNIXシステムに対して認証を実行するためには、誰もが同じ方法を使用して認証データを操作する必要があります。

実際、ネットワーク上でパスワード(ハッシュ、ハッシュ+塩など)を送信する唯一の理由は、レガシーシステムまたはそれ以外の場合は「レガシー要件」と呼ばれるシステムを遵守するためです。セキュリティの面で比較的弱いシステムでも同じことが言えます。

+0

私はこれを正しいものとしてマークしますが、現実の理由であるかどうかは現在判断できません。 – pauldoo

関連する問題