1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

РЕШЕНО Куда опубликовать тему (Хеш AuthMe)

Тема в разделе "Оффтопик", создана пользователем BeastMark, 30 окт 2023.

  1. Автор темы
    BeastMark

    BeastMark Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    BeastMark
    Мне нужна помощь с функцией проверки в авторизации
    Я хочу сделать авторизацию пользователей на сайте, на сервере используется плагин AuthMe в функции хеша SHA256 соль doubleMD5SaltLength: 8
    Как реализовать проверку пароля который введён на сайт, с хешем пароля который в базе данных

    CMS не использую, пишу сам, лаучер использовать не хочу

    Куда я могу опубликовать эту тему? либо буду признателен если ответят тут
     
  2. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Не очень подходит, но наверно сюда: https://rubukkit.org/forums/razrabotka-plaginov-dlja-novichkov.7/

    По поводу вопроса - достаточно применить шифрование с солью к переданной строке и полученный результат сравнить со значением в базе.
    Как конкретно шифрование организовать - зависит от языка и стека технологий, но в общем случае гуглится "язык sha256 with salt".
    В некоторых языках сразу будет функция сравнения с существующим паролем
     
  3. SlenderMix

    SlenderMix Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    HIDDEN
    Код:
    <?php
    // Пример данных из базы данных
    $storedHash = "хеш_из_базы_данных";
    $salt = "соль_из_базы_данных";
    
    // Получение введенного пользователем пароля
    $userInputPassword = "пароль_пользователя";
    
    // Генерация хеша для введенного пароля с использованием соли
    $userInputHash = hash('sha256', $salt . hash('md5', $userInputPassword));
    
    // Проверка совпадения хешей
    if ($userInputHash === $storedHash) {
        echo "Пароль верен";
    } else {
        echo "Неверный пароль";
    }
    ?>

    Код:
    //Java
    import java.security.MessageDigest;
    
    public class PasswordAuthentication {
        public static void main(String[] args) {
            // Пример данных из базы данных
            String storedHash = "хеш_из_базы_данных";
            String salt = "соль_из_базы_данных";
    
            // Получение введенного пользователем пароля
            String userInputPassword = "пароль_пользователя";
    
            // Генерация хеша для введенного пароля с использованием соли
            String userInputHash = sha256(salt + md5(userInputPassword));
    
            // Проверка совпадения хешей
            if (userInputHash.equals(storedHash)) {
                System.out.println("Пароль верен");
            } else {
                System.out.println("Неверный пароль");
            }
        }
    
        private static String md5(String input) {
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                byte[] messageDigest = md.digest(input.getBytes());
    
                StringBuilder hexString = new StringBuilder();
                for (byte b : messageDigest) {
                    hexString.append(String.format("%02x", b));
                }
    
                return hexString.toString();
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
        private static String sha256(String input) {
            try {
                MessageDigest md = MessageDigest.getInstance("SHA-256");
                byte[] messageDigest = md.digest(input.getBytes());
    
                StringBuilder hexString = new StringBuilder();
                for (byte b : messageDigest) {
                    hexString.append(String.format("%02x", b));
                }
    
                return hexString.toString();
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }

    Код:
    //JS
    
    const crypto = require('crypto');
    
    // Пример данных из базы данных
    const storedHash = "хеш_из_базы_данных";
    const salt = "соль_из_базы_данных";
    
    // Получение введенного пользователем пароля
    const userInputPassword = "пароль_пользователя";
    
    // Генерация хеша для введенного пароля с использованием соли
    const userInputHash = crypto.createHash('sha256').update(salt + crypto.createHash('md5').update(userInputPassword).digest('hex')).digest('hex');
    
    // Проверка совпадения хешей
    if (userInputHash === storedHash) {
        console.log("Пароль верен");
    } else {
        console.log("Неверный пароль");
    }

    Код:
    //Плюсы
    
    #include <iostream>
    #include <sstream>
    #include <openssl/md5.h>
    #include <openssl/sha.h>
    
    // Функция для генерации хеша MD5
    std::string md5(const std::string& input) {
        unsigned char result[MD5_DIGEST_LENGTH];
        MD5((const unsigned char*)input.c_str(), input.length(), result);
    
        std::ostringstream sout;
        for (int i = 0; i < MD5_DIGEST_LENGTH; i++) {
            sout << std::hex << std::setw(2) << std::setfill('0') << (int)result[i];
        }
    
        return sout.str();
    }
    
    // Функция для генерации хеша SHA-256
    std::string sha256(const std::string& input) {
        unsigned char result[SHA256_DIGEST_LENGTH];
        SHA256((const unsigned char*)input.c_str(), input.length(), result);
    
        std::ostringstream sout;
        for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
            sout << std::hex << std::setw(2) << std::setfill('0') << (int)result[i];
        }
    
        return sout.str();
    }
    
    int main() {
        // Пример данных из базы данных
        std::string storedHash = "хеш_из_базы_данных";
        std::string salt = "соль_из_базы_данных";
    
        // Получение введенного пользователем пароля
        std::string userInputPassword = "пароль_пользователя";
    
        // Генерация хеша для введенного пароля с использованием соли
        std::string userInputHash = sha256(salt + md5(userInputPassword));
    
        // Проверка совпадения хешей
        if (userInputHash == storedHash) {
            std::cout << "Пароль верен" << std::endl;
        } else {
            std::cout << "Неверный пароль" << std::endl;
        }
    
        return 0;
    }
    Вот тебе примеры, кушай не обляпайся.
     

Поделиться этой страницей