Использование Bouncycastle для обмена ключами Диффи-Хеллмана между Java и.NET
Я хочу использовать bouncycastle для выполнения обмена ключами Диффи-Хеллмана между двумя программными компонентами (Алиса и Боб). Алиса и Боб имеют свою собственную пару ключей, выпущенную из одного и того же ЦС. Однако Алиса будет Java, а Боб будет C#.
Я искал - и нашел - примеры того, как выполнить обмен на каждом языке. Но у меня есть 2 проблемы с примерами, которые я нахожу:
- Примеры упрощены за счет реализации обмена между Алисой и Бобом в одном и том же блоке примера кода. У меня возникают проблемы с пониманием того, как будут выглядеть Алиса и Боб, когда им действительно придется обмениваться промежуточными значениями (g^a mod p и g^b mod p) через поток SSL.
- Примеры всегда для программных компонентов, написанных на одном языке. В другом месте я читал, что библиотеки обмена ключами Диффи-Хеллмана часто используют некоторые внутренние константы для генерации их промежуточных значений. Основываясь на моих знаниях о том, как работает DH, я не понимаю, где понадобятся какие-либо константы, но я не эксперт.
Исходя из этих двух вопросов, у меня есть два вопроса:
- Кто-нибудь знает пример кода, который показывает код для обеих сторон отдельно, и
- Если я использую API-интерфейсы bouncycastle для компонентов java и.net, знает ли кто-нибудь причину, по которой эти компоненты не смогут согласовать один и тот же секретный симметричный ключ?