1

私は現在、Dao パターンを使用して mysql データベースと組み合わせた Java プログラムを開発しています。テーブルに保存するユーザー情報があり、元のパスワード文字列の Sha1 ハッシュ バージョンを保存しています。私はそれを行うために apache.commons.codec.digest.DigestUtils を使用しています。php-mysql で表示される文字列は完璧ですが、Java テスト プログラムで同じ文字列を表示しようとすると、まったく異なる結果になります。

ユーザーオブジェクトのコンストラクターは次のとおりです。

public User(int id, String name, String firstName, String email, String login, String password)
    {
        super(id, name, firstName); 
        this.email = email;
        this.login = login;
        //Convert the password to SHA1 before storing it in the object
        //using Apache commons-codec-1.9 lib
        this.hashedPassword = DigestUtils.sha1Hex(password);
    }

たとえば、パスワードとして「aff」を使用してユーザーを作成する場合、

User user1 = new User(1, "Durand", "Jack", "jack.durand@mymail.com", "jack", "aff"); 

mysql で "0c05aa56405c447e6678b7f3127febde5c3a9238" が表示されますが、これは正しく、オンライン sha1 ハッシャーの出力と同じです。

しかし、データをオブジェクトに読み込んで、Java の Sysout(User.getPassword()) で表示すると、明らかに同じではない "c14b77e8930a8bfd884c8917f2b7335501a39dde" が表示されます。

これを引き起こしている原因について何か考えはありますか?Byte[] の問題に関する以前の投稿をいくつか読みましたが、DigestUtils.sha1Hex(password) メソッドはプレーンな文字列を返すと言われています。それで、私は何が欠けていますか?

4

1 に答える 1