Как выполнить умножение X25199 на C#?
Я работаю над расшифровкой сообщения, полученного с какого-то устройства. Я мало что знаю об этом, но команда разработчиков устройства отправила эту инструкцию для расшифровки сообщения:
The "public session key" and the backend's private key are used to calculate the session key.
tag/backend AES session key: SHA256(backend_private_X25519key *X25519 multiply* public_session_key)[0:15]
The backend needs to perform a X25519 multiplication of its private key with the "public session key" transmitted in the packet.
The first 16 byte of the SHA256 sum of the multiplication result is the AES session key.
У меня есть все ключи, такие как открытый ключ сеанса, закрытый ключ сеанса и т. Д., Но я не знаю о многопоточности x25519. Я пробовал гуглить, а также использую следующую программу, но она не работает.
X25519PrivateKeyParameters privateKeyAlice = new X25519PrivateKeyParameters(Hex.Decode("000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"), 0);
X25519PublicKeyParameters publicKeyBob = new X25519PublicKeyParameters(Hex.Decode("112233445566778899AABBCCDDEEFF00112233445566778899AABBCCDDEEFF00"), 0);
X25519Agreement agreementAlice = new X25519Agreement();
agreementAlice.Init(privateKeyAlice);
byte[] secretAlice = new byte[agreementAlice.AgreementSize];
agreementAlice.CalculateAgreement(publicKeyBob, secretAlice, 0);
Console.WriteLine(Hex.ToHexString(secretAlice));
Console.WriteLine(sha256(Hex.ToHexString(secretAlice)));
Console.ReadLine();
Не могли бы вы помочь мне, как сделать умножение и сгенерировать ключ?