非对称加密的公钥和私钥是通过数学算法生成的,最常用的算法是RSA算法。RSA算法使用两个大素数来生成公钥和私钥,其生成过程如下:
- 随机选择两个大素数p和q,计算它们的乘积n=p*q。
- 计算欧拉函数φ(n) = (p-1)*(q-1),φ(n)表示小于n的正整数中与n互质的数的个数。
- 随机选择一个整数e,1<e<φ(n),e与φ(n)互质。
- 计算e对于φ(n)的模反元素d,即满足e*d mod φ(n) = 1的整数d。
- 公钥为(n, e),私钥为(n, d)。
生成公钥和私钥后,公钥可以公开,任何人都可以使用它来加密消息,但只有私钥的持有者才能将其解密。