Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

BeastMark

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

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

Куда я могу опубликовать эту тему? либо буду признателен если ответят тут
 
Не очень подходит, но наверно сюда: https://rubukkit.org/forums/razrabotka-plaginov-dlja-novichkov.7/

По поводу вопроса - достаточно применить шифрование с солью к переданной строке и полученный результат сравнить со значением в базе.
Как конкретно шифрование организовать - зависит от языка и стека технологий, но в общем случае гуглится "язык sha256 with salt".
В некоторых языках сразу будет функция сравнения с существующим паролем
 
Код:
<?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;
}

Вот тебе примеры, кушай не обляпайся.
 
Назад
Верх