适合RSA实现的语言

2024-04-25 17:18:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为一个大学项目实现一个RSA密码系统算法,我正试图决定使用哪种编程语言。我对C很熟悉,所以这是一个方便的选择。但是,该算法必须处理非常大的数字(它将包括一个素性子例程),而且我听说使用Python将导致更好的实现。对吗?在

提前谢谢你。在


Tags: 项目算法密码系统数字例程rsa编程语言
3条回答

使用脚本语言或任何比C语言(例如C或Java)更高级的语言将更容易,因为您不必处理内存管理和其他与项目无关的任务。在

我不知道Python是否会导致“更好”的实现,因为better在这里是相当主观的。你可以找到两者的数值库,这样你就可以轻松地处理大量的数字。Python的优点是拥有numpy库,这个库非常容易阅读和使用,并且通常更易于人阅读,这通常会导致调试更容易。在

当然,您可以使用任何语言来实现RSA,甚至汇编程序。问题可能不是关于“更好”的实现,而是关于在几周后查看结果代码时什么更容易理解。在

让我们回顾一下实施RSA需要什么:

  • 大整数支持
  • 模幂
  • 模逆
  • 密钥生成的素性测试

你所选择的语言对这些语言的支持越多,结果就越清晰易懂。像C++)这样的低级语言不支持大整数,但是像gmp这样的库将为您提供所需的一切。Java有一个BigInteger类。在

但是,结果可能不像内置大整数支持的语言(例如Python、Ruby或Haskell)那样容易理解。生成的代码看起来很像教科书中对所用算法的描述。缺点是,它们往往比高度优化的gmp代码慢。在

但由于性能可能不是您现在所追求的,所以我建议您使用更高级的语言。你不必面对低水平的维护,你可以专注于手头的任务,挑选你最喜欢的或者有经验的。如果你想从你对C的熟悉中汲取经验,没问题,使用一个aribitrary精度库,比如gmp,你也可以使用。在

对于默认情况下可能未内置到语言中的缺失部分,可以使用以下内容作为参考:

尽管您可能已经知道了这一点,但为了完整起见,请允许我警告您,这种被称为“教科书式RSA”的实现在生产中使用是不安全的—许多事情还没有得到解决。有RSA blinding来防止旁道攻击,RSA作为加密方案是安全的,你还需要实现某种形式的填充,关键是要为你的密钥使用加密安全的随机生成器等等

相关问题 更多 >