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

254
10 июля 2017, 15:52

Привет друзья, помогите привести кусок кода на 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();
}

Буду признателен за любые найденные расхождения. Спасибо.

READ ALSO
FileNotFoundException при загрузке фотографии из галереи

FileNotFoundException при загрузке фотографии из галереи

Никак не могу понять, как загрузить картинку из галереи корректноВылетает исключение, о том что такой файл не найден, когда кладу его в Request...

256
Exception in thread &ldquo;main&rdquo; java.lang.NullPointerException

Exception in thread “main” java.lang.NullPointerException

Первий цикл проверяет каждую строку из файла и если там есть руские символи то вставляет их в Map, а второй должен заменить символи в файле...

279
Обработка bootstrap multiple select

Обработка bootstrap multiple select

Пользуюсь вот этим скриптом

295
Вывод подменю в определенном месте

Вывод подменю в определенном месте

Как сделать так, чтобы при наведении мышью на пункт меню, всплывало подменю этого пункта в определенном месте на странице, как на рисунке

322