私はあなたの助けが必要です。Javaとpythonが同じsha-1値を取得しない
hash.py
# -*- coding: utf-8 -*-
import hashlib
username = raw_input('username:')
timestamp = raw_input('timestamp:')
app_id = 'dad'
secret_key = 'dadda'
print 'The hashed string is: ' , hashlib.sha1(username + timestamp + app_id + secret_key).hexdigest()
hash.java
public static String generateSHA1(String password)
{
String sha1 = "";
try
{
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(password.getBytes("UTF-8"));
sha1 = byteToHex(crypt.digest());
}
catch(Exception e)
{
e.printStackTrace();
}
return sha1;
}
private static String byteToHex(final byte[] hash)
{
Formatter formatter = new Formatter();
for (byte b : hash)
{
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
UPDATE: 私のJavaとPythonスクリプトは、文字列のAME SHA-1値を得ていません仮定するとパスワードはすでに連結されています:使用rname、timestamp、app_id、secret_key
私が見逃したことはありますか?私は、私のJavaコードreに何か問題があると思う。これを出力するUTF-8:\ xe2 \ x80 \ x8bしかし、私はそれを理解できませんでした。どんな助けもありがとう。ありがとう。
この現象は、ユーザー名/タイムスタンプのすべての値に対して発生しますか?試しているサンプルのユーザー/タイムスタンプのペアを投稿できますか? –
@ SanjayT.Sharmaユーザー名:[email protected]タイムスタンプ:1447943648 –
問題は再現できません。私は、あなたのサンプル入力を使って、同じ 'eeae0d665ed71f3d8f4e3d344fda1c3735dc46c0'ハッシュ値を得ています。 –