Поддержим ваш первый шаг:
-10% на профессии и специальные условия до 19 мая

как генерировать уникальный хеш из строки на javascript

Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
22 декабря 2024

Одним из стандартных методов генерации хеша является использование алгоритма SHA-256. Этот метод доступен через встроенный интерфейс SubtleCrypto в браузерах и в Node.js.

async function generateHash(input) {
    const encoder = new TextEncoder();
    const data = encoder.encode(input);

    const hashBuffer = await crypto.subtle.digest('SHA-256', data);
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    const hashHex = hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');

    return hashHex;
}

generateHash('Hello, World!').then(hash => {
    console.log(hash); // выводит уникальный хеш строки
});

Пример кода для Node.js:

const { createHash } = require('crypto');

function generateHash(input) {
    return createHash('sha256')
        .update(input)
        .digest('hex');
}

const hash = generateHash('Hello, World!');
console.log(hash); // выводит уникальный хеш строки

Если необходимо работать с хешированием в случае, когда браузер не поддерживает SubtleCrypto, можно воспользоваться библиотеками, например, crypto-js.

Установка библиотеки:

npm install crypto-js

Пример использования:

const CryptoJS = require('crypto-js');

function generateHash(input) {
    const hash = CryptoJS.SHA256(input);
    return hash.toString(CryptoJS.enc.Hex);
}

const hash = generateHash('Hello, World!');
console.log(hash); // выводит уникальный хеш строки

Если вам не нужны сильные требования к криптографической стойкости, вы можете создать простой хеш-функцию на основе математических операций.

function simpleHash(input) {
    let hash = 0;
    for (let i = 0; i < input.length; i++) {
        hash = (hash << 5) - hash + input.charCodeAt(i);
        hash |= 0; // Привести к 32-битному целому числу
    }
    return hash.toString(16);
}

const hash = simpleHash('Hello, World!');
console.log(hash); // выводит уникальный хеш строки
0 0
Бесплатно
Основы JavaScript
Теория и практика с нуля
Перейти к курсу
Поможем с выбором
Если у вас есть вопросы о формате или вы не знаете, что выбрать, оставьте свой номер — мы позвоним и ответим на все вопросы
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»