Криптография
Пространство имён McProtoNet.Cryptography содержит утилиты для работы с криптографией в протоколе Minecraft. Основной класс CryptoHandler предоставляет методы для:
Декодирования RSA-ключей
Генерации AES-ключей
Вычисления хэшей для аутентификации
Класс CryptoHandler
Основные методы
DecodeRSAPublicKey(byte[] x509key)
Декодирует RSA публичный ключ из формата X.509 для использования в шифровании.
Параметры
x509key(byte[]) — сырые байты публичного ключа в кодировке ASN.1
Возвращает
RSACryptoServiceProvider— объект для работы с RSA-шифрованиемnull— если декодирование не удалось
Пример использования
GenerateAESPrivateKey()
Генерирует случайный 128-битный ключ для симметричного AES-шифрования
Возвращает
byte[]— 16-байтовый AES-ключ
Особенности
Автоматически устанавливает размер ключа 128 бит
Использует криптографически безопасный генератор
GetServerHash(string serverID, byte[] PublicKey, byte[] SecretKey)
Вычисляет SHA-1 хэш для проверки сессии в online-режиме
Параметры
serverID(string) — уникальный идентификатор сервераPublicKey(byte[]) — публичный RSA-ключ сервераSecretKey(byte[]) — секретный ключ клиента
Возвращает
string— HEX-строка хэша в формате, требуемом протоколом Minecraft
Алгоритм
Объединяет данные в последовательность:
serverID + SecretKey + PublicKeyВычисляет SHA-1 хэш
Преобразует результат в знаковое целое