Python 适合RSA实现的语言

Python 适合RSA实现的语言,python,c,cryptography,rsa,primality-test,Python,C,Cryptography,Rsa,Primality Test,我想为一个大学项目实现一个RSA密码系统算法,我正试图决定使用哪种编程语言。我非常熟悉C语言,所以这将是一个方便的选择。但是,该算法必须处理非常大的数字(它将包括一个素性子例程),我听说使用Python将得到更好的实现。是这样吗 提前谢谢。使用脚本语言或比C更高级的语言(例如C#或Java)可能会更容易,因为您不必处理内存管理和其他与项目无关的任务。使用脚本语言或比C(例如C#或Java)更高级的语言很可能会更容易,因为您不必处理内存管理和其他与项目无关的任务。我不知道Python是否会带来“更

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


提前谢谢。

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

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

我不知道Python是否会带来“更好”的实现,因为更好在这里是相当主观的。您可以找到两者的数字库,这将使您能够轻松地处理大量数据。Python的优点是(imo)有numpy库,该库非常易于阅读和使用,并且通常更易于人类阅读,这通常会导致更容易的调试。

我不知道Python是否会导致“更好”的实现,因为更好在这里是相当主观的。您可以找到两者的数字库,这将使您能够轻松地处理大量数据。Python具有numpy库的优点(imo),该库非常易于阅读和使用,并且通常更易于人类阅读,这通常会导致更容易的调试。

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

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

  • 大整数支持
  • 模幂运算
  • 模逆
  • 密钥生成的素性测试
您选择的语言对这些内容的支持越多,结果就越清晰、更容易理解。像C(++)这样的低级语言对大整数没有本机支持,但是像C(++)这样的库将为您提供所有必要的东西。Java为此提供了BigInteger类

但是,结果可能不像使用内置大整数支持的语言(例如Python、Ruby或Haskell)实现那样容易理解。生成的代码与所使用算法的教科书描述非常相似。在缺点方面,它们往往比高度优化的gmp代码慢

但由于性能可能不是您目前所追求的,因此我建议您使用更高级的语言。您不必处理低级维护,可以专注于手头的任务,选择您最喜欢的或有经验的任务。如果你想从你对C的熟悉中汲取经验,没问题,使用一个精确的库,比如gmp,你也可以

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

  • 模块求幂是Python中内置的(
    pow
    带有3个参数),对于其他语言,您可以尝试
  • 模块逆可以从中检索。gmp和Python端口将内置这些算法
  • 对于素性测试,我建议使用它,这也不太难实现,但您也可以在中找到实现

虽然您可能已经知道了这一点,但为了完整起见,请允许我警告您,这种所谓的“教科书式RSA”实现在生产中使用是不安全的—许多问题尚未解决。为了防止旁道攻击,RSA作为一种加密方案是安全的,您还需要实现某种形式的填充,对密钥等使用加密安全的随机生成器是至关重要的。

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

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

  • 大整数支持
  • 模幂运算
  • 模逆
  • 密钥生成的素性测试
您选择的语言对这些内容的支持越多,结果就越清晰、更容易理解。像C(++)这样的低级语言对大整数没有本机支持,但是像C(++)这样的库将为您提供所有必要的东西。Java为此提供了BigInteger类

但是,结果可能不像使用内置大整数支持的语言(例如Python、Ruby或Haskell)实现那样容易理解。生成的代码与所使用算法的教科书描述非常相似。在缺点方面,它们往往比高度优化的gmp代码慢

但由于性能可能不是您目前所追求的,因此我建议您使用更高级的语言。您不必处理低级维护,可以专注于手头的任务,选择您最喜欢的或有经验的任务。如果你想从你对C的熟悉中汲取经验,没问题,使用一个精确的库,比如gmp,你也可以

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

  • 模块求幂是Python中内置的(
    pow
    带有3个参数