私は sha1($password) の出力としてデータベースに保存されたパスワードを持つ PHP アプリケーションを持っています。これは明らかにバイナリ SHA1 ハッシュの 16 進表現です。(私が理解しているように)
それを Apache .htpassword ファイルと互換性のある形式に変換したいと思います。これは、base64 でエンコードされたバイナリ値または base64_encode(sha1($password, true)) の出力である必要があります。
私はこのスレッドを見つけました: Convert base64'd SHA1 hashes to Hex hashs ... これは、私がする必要があることとは逆のことをしており、うまく機能します。コマンドの順序を変更して、bin2hex の代わりに hex2bin を使用しようとしましたが、うまくいきません。
致命的なエラー: 行 1 の php シェル コードの未定義関数 hex2bin() の呼び出し
どうやらそれはPHP 5.4まで利用できず、このサーバーはまだ5.3.xにあります http://php.net/manual/en/function.hex2bin.php
ここに本当の問題があります。私は実際にそれを PERL に変換する必要があり、できればすべてをシンプルに保つために標準の組み込みモジュールのみを使用します。なぜ彼らがこのステップで perl を使用しているのかはわかりませんが、大きなアプリケーションの非常に小さな部分を編集しようとしていて、まだ全体を変更したくありません :)
明確にするために、16 進数を 2 進数に変換しようとしているわけではありません。これはバイナリ値の16進表現で、perlの「文字列」に格納されています:)
前もってありがとう、トミー