mixtape774
@mixtape774
Занимаюсь Web, Desktop разработкой и реверсингом

Как переписать код с Java на PHP хеширование SHA1?

Привет друзья, помогите привести кусок кода на Java к PHP. Мои результаты различаются в плане итоговой подписи, не знаю что делать, в чем проблема.

Код на Java:
private static String bytesToStringSign(byte[] bArr) {
        StringBuilder stringBuilder = new StringBuilder();
        for (byte b : bArr) {
            stringBuilder.append(Integer.toString((b & 255) + 256, 16).substring(1));
        }
        return stringBuilder.toString();
    }

    public static String getSign(File file, String str) throws IOException, NoSuchAlgorithmException {
        InputStream fileInputStream;
        Throwable th;
        MessageDigest instance = MessageDigest.getInstance("SHA-1");
        try {
            fileInputStream = new FileInputStream(file);
            try {
                byte[] bArr = new byte[8192];
                int read = fileInputStream.read(bArr);
                while (read != -1) {
                    instance.update(bArr, 0, read);
                    read = fileInputStream.read(bArr);
                }
                if (read == -1) {
                    byte[] bytes = str.getBytes();
                    instance.update(bytes, 0, bytes.length);
                }
                String a = bytesToStringSign(instance.digest());
                if (fileInputStream != null) {
                    fileInputStream.close();
                }
                return a;
            } catch (Throwable th2) {
                th = th2;
                if (fileInputStream != null) {
                    fileInputStream.close();
                }
                throw th;
            }
        } catch (Throwable th3) {
            th = th3;
            fileInputStream = null;
            if (fileInputStream != null) {
                fileInputStream.close();
            }
            throw th;
        }
    }

    private static String main() {
    	File image;
    	String SECRET_STRING = "qwertyuiopasdfghjklzxcvbnmqwertyuiopas";
    	String result = getSign(image, SECRET_STRING);
    }


Реализация на PHP:
function GetImageSign($input_image) {
        // получаем 8192 первых байт данных изображения
	$data = substr($input_image['data'], 0, 8192);
	// добавляем секретную строку
	$data .= '"qwertyuiopasdfghjklzxcvbnmqwertyuiopas"';

	// полученный Java Hash - db6f43a2e43eec3e3b90ed9dc17df2a409675d64
	$ar = sha1($data, true);
	$size = strlen($ar);

	$str = '';
	for ($i = 0; $i < $size; $i++) {
		$str .= substr(dechex(((int)$ar[$i] & 255) + 256), 2);
	}
	print_r($str);
	die();
}


Буду признателен за любые найденные расхождения. Спасибо.
  • Вопрос задан
  • 460 просмотров
Пригласить эксперта
Ответы на вопрос 2
Чем стандартная функция вам не нравится? php.net/manual/ru/function.sha1.php
Если вам нужна sha1 для файлов то вот - php.net/manual/ru/function.sha1-file.php
Ответ написан
mixtape774
@mixtape774 Автор вопроса
Занимаюсь Web, Desktop разработкой и реверсингом
Я не джавист, поэтому неверно понял код изначально. Ошибка была глупая. Вопрос можно закрыть.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 15:51
3000 руб./за проект
25 апр. 2024, в 15:31
70000 руб./за проект
25 апр. 2024, в 15:26
15000 руб./за проект