Приклад перевірки хешу SHA-256

На цій сторінці ти можеш побачити приклад реалізації алгоритму перевірки хешу SHA-256 із використанням JavaScript. Цей код можна використовувати для самостійної перевірки результатів нашої рулетки.

Код для перевірки хешу
// Function for SHA-256 hash verification
async function verifyHash(number, salt, originalHash) {
    try {
        // Format string as "number:salt"
        const data = `${number}:${salt}`;

        // Encode string to byte array
        const encoder = new TextEncoder();
        const dataBuffer = encoder.encode(data);

        // Calculate SHA-256 hash
        const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);

        // Convert ArrayBuffer to hex string
        const hashArray = Array.from(new Uint8Array(hashBuffer));
        const computedHash = hashArray.map(b =>
            b.toString(16).padStart(2, '0')
        ).join('');

        // Check if computed hash matches the original
        const isValid = computedHash === originalHash;

        return {
            isValid,
            computedHash,
            originalHash,
            number,
            salt,
            input: data
        };
    } catch (error) {
        console.error('Error during hash verification:', error);
        return {
            isValid: false,
            error: error.message
        };
    }
}
Як використовувати цей код:
  1. Скопіюй код функції verifyHash
  2. Додай його до свого JavaScript-проєкту
  3. Виклич функцію з параметрами: число, сіль та оригінальний хеш
  4. Функція поверне об'єкт із результатом перевірки та додатковою інформацією
Зверни увагу: Цей код використовує Web Crypto API, доступний у більшості сучасних браузерів.
Спробуй сам
Залиш порожнім для автоматичного обчислення та порівняння.
Результат перевірки
Чекання перевірки...
-
-
-

Як працює перевірка хешу?

Генерація даних

Система створює рядок у форматі "число:сіль" (наприклад, "5:a1b2c3d4e5f6"). Тут число – це результат раунду рулетки (від 0 до 36), а сіль – випадковий рядок символів.

Обчислення хешу

Цей рядок перетворюється на масив байтів, до якого застосовується алгоритм SHA-256. Результатом є 64-символьний рядок у шістнадцятковому форматі.

Публікація та перевірка

Перед початком раунду публікується лише хеш. Після завершення раунду розкриваються число та сіль. Ти можеш самостійно обчислити хеш та переконатися, що він відповідає опублікованому.

Чому це гарантує чесність?

Оскільки хеш публікується до початку прийому ставок, а результат та сіль розкриваються після закінчення раунду, система не може змінити результат після того, як гравці зробили свої ставки. Криптографічний алгоритм SHA-256 гарантує, що неможливо знайти іншу пару "число: сіль", яка дала б такий самий хеш.