0

我从来没有上过任何关于加密或安全的课程,我正在尝试自学一些基础知识,所以如果这是一个愚蠢的问题,请原谅我(别担心,我没有做任何敏感的事情)

因此,我正在使用 Crypto++,以便我可以对文件进行签名,以查看该文件是否已被我以外的其他人编辑。库附带的测试应用程序看起来像它具有选项(rs 和 rv),它们完全可以在我自己的程序中执行我想要执行的操作(验证文件签名的完整性)。当然,在此之前我需要生成一个公钥和私钥。当使用测试应用程序的 g 选项这样做时,它会要求我以位为单位指定密钥长度。密钥长度有什么区别?

4

1 回答 1

2

密钥长度决定了某人破解您的密码的难度。对于数字签名,这意味着某人生成假签名有多难。

对于 RSA,1024 位的密钥长度对于非敏感信息已足够,但它只能使用几年,然后用新密钥替换。2048 位更强,4096 位更强。

对于一个天真的蛮力攻击者来说,在密钥长度上添加一个位会使他们需要做的工作量加倍以破坏您的密钥。但是,像 RSA 这样的算法不能以这种方式扩展:2048 位 RSA 密钥的破解难度不如 1024 位密钥的 2^1024 倍(除非攻击者真的很愚蠢)。

通常,公钥算法(例如 RSA)需要比对称密钥算法(例如 AES)大得多的密钥,因为它们依赖于不同的数学属性。

对于密码学的良好入门,您应该查看Peter Gutmann 的哥斯拉密码教程。它的可读性很强,可以很好地概述加密货币如何以各种形式工作。

于 2011-07-27T04:25:00.310 回答