https://iorilan.medium.com/secure-programming-what-is-diffie-hellman-key-exchange-and-how-it-works-7dbbb837eab2