アプリケーションのプロトタイプとして、単純なユーザー ログインを作成しています。ユーザーのパスワードは、sha224 を使用してハッシュされ、バックエンドに転送されます。私が今直面している問題は次のとおりです。DB に格納されたパスワード (これも sha224 を使用してハッシュされています) は、送信しているハッシュとは少し異なっているようです。次のコードを使用してハッシュを作成します。
指定されたパスワード == テスト
パイソン
from hashlib import sha224
sha224("test").hexdigest()
アンドロイド
MessageDigest sha224 = MessageDigest.getInstance("SHA-224");
sha224.update(key.getBytes());
byte[] digest = sha224.digest();
StringBuffer buffer = new StringBuffer();
for(int i = 0; i < digest.length; i++) {
buffer.append(String.valueOf(Integer.toHexString(0xFF & digest[i])));
}
return buffer.toString();
生成されるものは次のようになります。2 つのハッシュを互いの真下に投稿します。(1 番目は python、2 番目は android)
90a3ed9e32b2aaf4c61c410eb925426119e1a9dc53d4286ade99a809 90a3ed9e32b2aaf4c61c41eb925426119e1a9dc53d4286ade99a89
それらはほとんど同じですが、python ハッシュにはさらに 2 つの 0 があります。理由はわかりますか?