Криптография
Пространство имён 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 хэш
Преобразует результат в знаковое целое