6

したがって、データベースからパスワードハッシュを読み取り/検証 (および書き込み) する Web サイトがあり、そのための SHA-512 スタイルのパスワードハッシュを作成するものがあります。

$6$GloHensinmyampOc$AxvlkxxXk36oDOyu8phBzbCfLn8hyWgoYNEuqNS.3dHf4JJrwlYCqha/g6pA7HJ1WwsADjWU4Qz8MfSWM2w6F.

Web サイトは Java ベースなので、SHA-512 ハッシャーを作成しました。問題は、実行される perl cron ジョブが多数あり、データベースに対してパスワード ハッシュを検証する必要があることです。それらは Solaris ボックスで実行されるため、crypt は $6$ 形式をサポートしていません。

だから、私がするとき:

printf("crypt => '%s'\n",crypt("Hello",'$1$CygnieHyitJoconf$'));

私は賢明に戻ります:

crypt => '$1$CygnieHy$n9MlDleP0qmGCfpbnVYy11'

一方、もしそうなら

printf("crypt => '%s'\n",crypt("Hello",'$6$CygnieHyitJoconf$'));

私は役に立たない

crypt => ''

glibc を使用していないボックスで Perl で SHA-512 パスワード ハッシュを取得する方法はありますか? (これは、ほとんどの場合、検索を行うときに言われることです(「暗号を使用」)。

perl で SHA-512 パスワード ハッシュを再実装したくありません。

ありがとう!

4

2 に答える 2

7

実際、私は自分の答えを見つけたと思います: Crypt::Passwd::XS

Crypt::Passwd::XS - 一般的な crypt() アルゴリズムの完全な XS 実装

unix_md5, apache_md5, unix_des, unix_sha256, unix_sha512.. ふぐをしないのはちょっと残念かな。しかし、それにもかかわらず、それは私の問題を解決します! とにかく@hobbsに感謝します!

use strict;
use Crypt::Passwd::XS;

{
        printf("crypt => %s\n",Crypt::Passwd::XS::crypt("Hello",'$6$CygnieHyitJoconf$'));
}

今すぐ戻ります

crypt => $6$CygnieHyitJoconf$vkGJm.nLrFhyWHhNTvOh9fH/k7y6k.8ed.N7TqwT93hPMPfAOUsrRiO3MmQB5xTm1XDCVlW2zwyzU48epp8pY/

予想通り!

于 2012-06-14T18:14:32.957 に答える
3

残念ながら違います。cryptシステム libccryptになります。これは、アルゴリズムの選択と、プレフィックス文字列のアルゴリズムへのマッピングを担当します。システムにないアルゴリズムにアクセスしたい場合はcrypt、それらの再実装を使用する必要があります。libc の場合、再実装については知りません。glibc の「SHA-512」パスワード ハッシュは、単なる SHA-512 ではありません。これは、私が知っている glibc 以外には存在しないカスタム アルゴリズムです。まだ機会があれば、異なる言語で複数の実装を持つ bcrypt や PBKDF-SHA-2 などのアルゴリズムに変更することをお勧めします。

于 2012-06-13T15:10:26.787 に答える