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