私は同様の質問をSOで確認しましたが、私の質問に答えることはできませんので、ここに質問を投稿してください。 私のコードでサードパーティのAPI呼び出しを行う前に、パスワード用の生のSHAを生成する必要があります。 私は、ApacheのコーデックライブラリにDigestUtilsを使用しています。次のJavaコードjavaのRaw SHA1はPHPのものと一致しません
public static String sha1 (String input)
throws NoSuchAlgorithmException,
UnsupportedEncodingException {
return new String(DigestUtils.sha(input));
}
// I suppose this gives me raw SHA.
そしてPHPコードは(私はグーグルになった)、以下、 "PASSWORD" の入力については
$passwordSha = sha1($password, true);
// The boolean value gives the SHA in binary format.
を下回っているされて、私は午前出力
JAVA : "+��0G���i.)�\�I�_�7"
PHP : "+��0G���i.)�\�I�_�7"
ですこれらのジャンク値を比較するのが正しいかどうかはわかりませんが、私が生成するパスワードのダイジェストは、上記のコードに依存していますが、PHPとJAVAでは異なります。 (PHPで正しい価値を得る)。
PHPとJAVAで生のSHA1を生成する際の違いを知ってもらうのを助けてください。
UPDATE
出力を編集しました。私の悪い..
異なる入力のためのいくつかのより多くの結果
入力: "secretnonce101112015-09-30T14:12:15Za`t^X"
JAVA: "SのAM; *"
PHP: "I>рq"
私はJavaの出力にいくつかの余分な文字が表示されます。これが私の最終的なパスワードダイジェストを台無しにしているかどうかは分かりません。
ランダムなバイトを 'String'に変換するのはかなり役に立たない。 16進文字列はもっと読みやすくなります。しかし、あなたのポイントは何ですか、あなたは両方のシステムから同じ値を得ています... ...? – Kayaman
出力を貼り付ける際に問題がありました。それを修正しました。 –