密钥生成

在密码学领域，密钥生成是指生成密钥的过程。密钥用于机密和解密数据。生成密钥的程序或者设备叫密鑰生成器（key generator）。

软件层次的生成 
现代密码学系统包括对称加密算法（例如AES）和公开密钥算法（例如：RSA、DSA和ECDSA）。对称加密算法使用一个单一的共享的密钥，保证该密钥的安全性才能保证数据的安全性。公钥算法使用公钥和私钥，公钥是能交付给任何人（往往通过数字证书的方式交付）。通訊雙方通过公钥加密数据，只有私钥的持有者才能解密该数据。

由于公开密钥算法往往慢于对称加密算法，现代的系统，例如 TLS 和 SSH 是结合使用两者：一方收到另一方的公钥，并加密一小块的数据（该数据可以是被稱為對話鍵的对称密钥）。之后的对话均使用对称加密算法进行数据加密，加密速度比之前快。

计算机密码学常常使用整数为密钥。在一些情况里，密钥是通过随机数生成器（random number generator, RNG）或（pseudorandom number generator, PRNG）随机生成的。伪随机数生成器产生的数据在分析时看起来是随机的。

经典的密码系统会在通信的一端产生两个具有识别性的密钥，然后以某种方式运输的其中一个密钥到通信的另一端。

最简单的破解數據而无需解密的方式是 暴力攻击 ——尝试每一个数字，直到達到密钥的最大長度。因此，使用一个足够长的 密鑰长度是十分重要的。长密钥使破解所需要的时间更長。目前推薦的密鑰长度是对称密钥算法至少128位元，橢圓曲線密碼學至少224位元，RSA至少2048位元，這樣的組合被認為在2030年以前是安全的。

参考文献 

密钥管理