在构建Web应用程序时,我想知道我需要多长时间的秘密(多少位)作为加密中的密钥 - 以及我是否可以在键盘上捣乱随机字符序列或者我是否需要一些特殊的软件为我生成一些东西?
(即从ssh-keygen之类的东西窃取私人RSA)
更新:我男子气概将在PHP的mcrypt library中使用此密钥,但我也对c ++选项感兴趣(在Linux上)。
答案 0 :(得分:9)
大多数加密库都具有生成会话密钥的功能。不要为了天堂的缘故尝试自己动手。
答案 1 :(得分:2)
如果可能,您应该使用/ dev / urandom。这是一个熵池,其中填充了非常接近真实随机数生成器的东西。以下是有关entropy pools和熵源的更多信息。
答案 2 :(得分:1)
你不是在这里比较苹果和苹果。我所知道的大多数openssl,gpg,pgp程序都不会从你输入的字符中获取输入。它们可能需要一些时间从击键之间的时间(pgp这样做),但它们也从你的操作系统收集的其他来源中随机:磁盘访问时间,数据包间到达时间和其他来源。这些被组合以生成用于加密使用的“随机”数字。
密钥长度有些不同。 NIST提出密钥长度的建议,您可能需要研究一下。话虽这么说,密钥长度几乎从来都不是安全链中最薄弱的环节。
选择合理的密钥大小,但不要忘记在security engineering的所有其他区域投入精力。那本书的第一版是在网上,是一本巨大的资源。