Мне нужна ваша помощь. Мои Java и Python скрипты не получают AME SHA-1 значение строки: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: Предполагая, что пароль уже включен: rname, timestamp, app_id и secret_key
Есть ли что-то, что я пропустил? Я думаю, что что-то не так с моим java-кодом re. UTF-8 выводит это: \ xe2 \ x80 \ x8b, но я не мог понять это. Любая помощь будет оценена. Благодарю.
Происходит ли такое поведение для всех значений имени пользователя/метки времени? Можете ли вы опубликовать образец пары пользователь/метка времени, которую вы пытаетесь? –
@ SanjayT.Sharma имя пользователя: [email protected] timestamp: 1447943648 –
Я не могу воспроизвести вашу проблему здесь; Я получаю то же самое значение «eeae0d665ed71f3d8f4e3d344fda1c3735dc46c0» для обоих вариантов ввода. –