Diff ie -Hellman и KDF - PullRequest
       70

Diff ie -Hellman и KDF

0 голосов
/ 21 июня 2020

Я пытаюсь выполнить обмен ключами Diff ie Hellman с параметром «en c» в «ECDH-ES + A256KW». Я не специалист по криптографии, поэтому я с трудом читал RFC, и поэтому без особых разъяснений. Я использую c# с Portable.BouncyCastle. Я пришел к следующему:

            var generator = (ECKeyPairGenerator) GeneratorUtilities.GetKeyPairGenerator("ECDH");
            generator.Init(new ECKeyGenerationParameters(domainParameters, new SecureRandom()));
            AsymmetricCipherKeyPair acsKeyPair = generator.GenerateKeyPair();

            IBasicAgreement keyAgreement = AgreementUtilities.GetBasicAgreement("ECDH");
            keyAgreement.Init(acsKeyPair.Private);
            Org.BouncyCastle.Math.BigInteger sharedSecret = keyAgreement.CalculateAgreement(remotePublicKey);
            byte[] sharedSecretBytes = sharedSecret.ToByteArray();

            IDigest digest = new Sha256Digest();
            byte[] symmetricKey = new byte[digest.GetDigestSize()];
            digest.BlockUpdate(sharedSecretBytes, 0, sharedSecretBytes.Length);
            digest.DoFinal(symmetricKey, 0);

Кажется, я делаю что-то не так, потому что, когда другая часть отправляет мне JWE ("alg": "dir", "en c": "A128CB C -HS256 ") с зашифрованным сообщением, которое не удается расшифровать из-за HMA C, когда я использую свой симметричный ключ, поэтому я полагаю, что обмен ключами выполняется неправильно. Любая помощь / подсказка будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...