Приклад перевірки хешу 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
};
}
}
Як використовувати цей код:
-
Скопіюй код функції
verifyHash - Додай його до свого JavaScript-проєкту
- Виклич функцію з параметрами: число, сіль та оригінальний хеш
- Функція поверне об'єкт із результатом перевірки та додатковою інформацією
Спробуй сам
Результат перевірки
Як працює перевірка хешу?
Генерація даних
Система створює рядок у форматі "число:сіль" (наприклад, "5:a1b2c3d4e5f6"). Тут число – це результат раунду рулетки (від 0 до 36), а сіль – випадковий рядок символів.
Обчислення хешу
Цей рядок перетворюється на масив байтів, до якого застосовується алгоритм SHA-256. Результатом є 64-символьний рядок у шістнадцятковому форматі.
Публікація та перевірка
Перед початком раунду публікується лише хеш. Після завершення раунду розкриваються число та сіль. Ти можеш самостійно обчислити хеш та переконатися, що він відповідає опублікованому.
Чому це гарантує чесність?
Оскільки хеш публікується до початку прийому ставок, а результат та сіль розкриваються після закінчення раунду, система не може змінити результат після того, як гравці зробили свої ставки. Криптографічний алгоритм SHA-256 гарантує, що неможливо знайти іншу пару "число: сіль", яка дала б такий самий хеш.