質問

PHPのPython同族があるかどうか疑問に思っていました crypt() 同様の方法で実行され、ランダム塩を生成し、保存された文字列内に埋め込む関数。

を使用して作成されたハッシュされたパスワードのテーブルがあります $5$ SHA256ベースの塩漬け暗号グラムをセットアップする文字列キー。これらのハッシュには、固定間隔で両端に付着した追加の記録されたエントロピーがいくつかありましたが、これらの文字を文字列から分割してコアハッシュを取得することは些細なことであり、まったく問題ではありません。

Pythonのドキュメントを見てきましたが、 hashlib それはPHPから同じ構文を利用しているようです crypt(). 。このアプローチは、PHPで利用されています(入力形式は、塩、アルゴ、ラウンドの間のドル記号と分割されています)。言語に固有のものですか?

ありがとう。

編集:

Python自身のネイティブの改訂版のように見えます crypt 関数は、PHPの手順と同様の手順を利用します。 3.3 Pre-Releaseドキュメントから:

http://docs.python.org/dev/library/crypt.html

編集:

最後に、純粋なPythonでこの機能を提供するライブラリであるPasslibを見つけました。

http://packages.python.org/passlib/index.html

役に立ちましたか?

解決

確かに非常に似ています FreeBSDの地下室 (マンページの「モジュラークリプト」を参照)。 Linuxなどで同じ方法であるかどうかは本当に思い出せませんが、これはユニークではないことを示しているようです。

私の知る限り、Pythonには直接的な等価物はありませんが、暗号化アルゴリズム自体がサポートされる必要があるため、自分でロールするのはそれほど難しくありません。 hashlib.

他のヒント

私はこの質問が古いことを理解していますが、PythonでPHPで書かれていたPythonにログインアルゴリズムを実装しようとしているときにそれを見つけました。 PHPの暗号関数は、Bcryptを含むやや不安定なDESアルゴリズムを使用します。それはあなたがあなたの文字列をハッシュするものによって異なります。 Passlibは、アプリケーションが現在PHP Cryptから取得している機能を複製するための最善の策です。ハッシュされたパスワードの1つを使用して、文字列の前面を見てください。 $ 2A $、$ 3 $、$ 6 $(または同様)などのものが表示されます。この文字列が存在しない場合、標準のDESハッシュを使用する可能性が高いことに注意してください。

このリンクにその情報を取ります:

http://pythonhosted.org/passlib/modular_crypt_format.html#mcf-identifiers

次に、Pythonで実装する必要があるアルゴリズムに合わせて一致させます。スキーム識別子は、そのハッシュアルゴリズムに関するPasslibドキュメントへのリンクです。この時点で、再実装を完了するために必要なすべての情報が必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top