1. Алгоритмов не тысячи. Но вот количество вариантов ключей - неисчислимо.
Телеграм использует симметричное 256-битное шифрование AES и шифрование RSA 2048. Обмен ключей идет по методу Диффи-Хеллмана. Также почитайте технический
FAQ
2. Шифруются не все сообщения и чаты, а только в том случае, если вы создаете секретный чат.
3. Почитайте банально википедию - что такое открытый ключ.
Вкратце.
1. Вася создает пару ключей. Один длиннее (приватный), другой короче (публичный). Одним можно зашифровать, другим расшифровать.
2. Вася передает Ане публичный ключ
3. Аня шифрует им сообщение и передает Васе
4. Вася расшифровывает.
При этом все могут перехватить и видеть публичный ключ Васи, но без приватного ключа расшифровать сообщение Ани не смогут.
Аня, в своем первом сообщении может передать свой публичный ключ, чтобы Вася мог им шифровать сообщения, которые сможет расшифровать только Аня.
В идеале, временная пара ключей может генериться отдельно для каждого чата/сессии - так работает https.
P.S. Полезные ссылки:
https://medium.com/@tglive/stop-reading-gizmodo-7f...