c - 如何在 C 中处理大整数

标签 c cryptography

我想实现密码算法。所以我需要一个合适的数据类型来处理有很多数字的整数。

许多最近的语言,例如 Java、Python 和 Ruby 都提供了执行此操作的 native 方法。但是,我正在用 C 语言编程,我想知道在那里实现基本操作的最佳方式和最简单方式是什么。

我想在没有任何外部库的情况下编写它。我考虑了两种选择:

  1. 使用 char 数组(类似于字符串,这对加密/解密 key 很有用)
  2. 使用位数组(我不知道该怎么做,但我认为这将取决于编译器)

你会怎么做?

最佳答案

(对我而言)显而易见的选择是 GMP其主要开发者 Torbjörn Granlund 是 2000 年赢得西蒙辛格“密码挑战赛”的瑞典五人队的成员。

根据该网站,该代码可用于在 3.2 GHz 的 AMD Phenom II 上在 1957 秒内计算 1000000000 位圆周率。

代码从 1991 年开始开发。

关于c - 如何在 C 中处理大整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8709602/

相关文章:

Java 加密将原始字节转换为公钥,反之亦然

c# - 对称加密 (AES) : Is saving the IV and Salt alongside the encrypted data safe and proper?

c - 是否存在某种 'strcmpf' 实现?

c - memcpy() 似乎不起作用

C语言改变流

c - 在 AVX 寄存器中旋转字节的有效方法

javascript - 来自 JavaScript 中的模数和私有(private)指数的 RSA 私钥

c - 如何在 C 中动态分配一个字符串数组?

c# - 构建 RSA 加密服务提供者是持久化还是泄露 key 数据?

node.js - NodeJS 如何使用 crypto-js 或使用自定义 key 大小、iv、模式和填充以 UTF8 编码的加密包来加密(AES 算法)数据