Я купил какое-то оборудование, в котором есть документ о том, как аутентифицировать здесь :
Крипто определенно не моя вещь, и я пытаюсь понять, как или даже в какой формеКрипто, это попытка найти примеры в Интернете, чтобы я мог пытаться общаться с использованием c # и предпочтительного ядра .net, чтобы я мог быть x-plat.
Теперь есть код здесь , который делает именно это, за исключением того, что он находится в файле node.js. Я верю и не знаю, что такое крипто-библиотека
В итоге это то, что они заявляютв документации:
Получить открытый ключ Miniservers через «jdev / sys / getPublicKey» -> {publicKey} a.Хранить на клиенте б.Формат: кодированный ключ X.509 в ANS.1 открывает соединение через WebSocket a.используйте следующий путь: «ws: // {ipOrUrl}: {порт} / ws / rfc6455» b.укажите «remotecontrol» в качестве Sec-WebSocket-Protocol.с.wss: // не поддерживается Miniserver. Создание ключа AES256 -> {ключ} (шестнадцатеричный код) Создание случайного AES iv (16 байт) -> {iv} (Hex) RSA Зашифруйте ключ AES + iv с помощью {publicKey} -> {session-key} (Base64) a.«{Ключ}: {iv}» - это полезная нагрузка, которая должна быть зашифрована с использованием RSA Обмен ключами через «jdev / sys / keyexchange / {session-key}» Создатьслучайная соль, шестнадцатеричная строка (длина может варьироваться, например, 2 байта) -> {соль} Теперь есть два варианта: a.Если токен существует, выполните аутентификацию, как описано в разделе Аутентификация с использованием токенов b.Если необходимо получить токен, действуйте, как описано в разделе «Получение токенов». 9.3 Связь с Miniserver Страница 5 из 21 После успешной аутентификации на основе токенов или получения нового токена сокет аутентифицируется и готов к работе..
Так что я почти уверен, что у меня все хорошо с шагом 2 (возможно, не с форматированным ключом, кодированным x.509 .. Я воспринял это как удаление отступов и простополучите значения base64:
UriBuilder builder = new UriBuilder("http://192.168.0.77");
using (var request = new LxHttpRequest(builder.Uri))
{
CancellationToken token = new CancellationToken();
string result = request.GetStringAsync("jdev/sys/getPublicKey", token).Result;
var res = ResultConverter.Deserialize(result);
Console.WriteLine(TokenAuth.parsePublicKey(res.Content));
}
Шаг 3, я клонировал код из loxnet , который, я думаю, является хорошей отправной точкой, поэтому я доволен этим ..
Шаг4/5, вот где я нахожусь:
var aes = new AesCryptoServiceProvider();
aes.GenerateIV();
byte[] iv = aes.IV;
aes.GenerateKey();
Console.WriteLine("Key base64: {0}", Convert.ToBase64String(aes.Key));
, но примерно в этот момент у меня маринована голова, и я раздражаюсь .. Я ценю, что это похоже на просьбу о помощи с домашней работой - но я 'Я надеюсь, что кто-то может объяснить, как это называется, поэтому я могу продолжать поиск - если кто-то не может помочь с примерами / фрагментами или предложением пакета nuget, который выполняет сложную работу - я взглянул на bouncycastle, но этозаставил мои глаза хотеть истекать кровью, пытаясь что-то понять: D: D
Пожалуйста, полегче с пламенем!