是否有库或其他方法可以进行 128 位数学运算?

Posted

技术标签:

【中文标题】是否有库或其他方法可以进行 128 位数学运算?【英文标题】:Is there a library or other way to do 128-bit math operations? 【发布时间】:2010-04-09 00:05:22 【问题描述】:

我正在编写一个加密应用程序,需要使用 128 位整数。

除了标准的加、减、乘、除和比较之外,我还需要一个幂函数和模函数。

有没有人知道可以做到这一点的库或其他实现?如果不是 128 位,是否有 64 位选项可用?

【问题讨论】:

定点还是浮点? @Mark:既然他提到了加密,我猜他想要 128 位整数。 @GregS:可能,但人们仍然需要在他们提出的问题中明确明确。 【参考方案1】:

查看GNU Multiple Precision Arithmetic Library。

【讨论】:

【参考方案2】:

大多数现代编译器都将通过使用 long long 类型提供至少 64 位。

【讨论】:

这还不够好。具有 64 位密钥的密码系统很容易受到暴力攻击(尽管它不是微不足道的)。具有 128 位密钥的密码系统不会受到暴力攻击,除非物理定律发生变化或有新的计算模型(我已经看到声称量子计算可以将 128 位密钥解密减少到两个 64 -bit 密钥解密;我不知道它们有多准确。) @David Thornley:1. 我同意。 2. OP问是否有64位类型可用,所以我回答了。我没有说这对加密货币有多合适。 3. 我的假设是,如果您的平台上有 64 位整数可用,那么实现 128 位操作会更容易。 这个答案证明了为什么如果你已经有了一些声誉,即使答案完全被忽略了,你也会得到支持。 @tilz0R:除了我在 2010 年回答这个问题时,我还没有一些声誉 :)【参考方案3】:

gcc 支持 uint128_t,它是一个 128 位整数,虽然这不是很便携。

由于我不知道任何使用 128 位模运算的主流密码系统,我想知道您正在实施什么方案。

【讨论】:

不少协议需要 128 位模幂运算。 @samoz:128 位算术对于公钥加密来说太小了。但除此之外,我不知道任何使用模幂运算的密码系统。所以我仍然想知道你想要实现什么。即,您很可能可以使用特殊用途的模块化缩减或其他一些技巧来改进您的实现。【参考方案4】:

寻找有限域中乘法和幂的蒙哥马利算法。我不知道任何图书馆,但我很确定有。

【讨论】:

以上是关于是否有库或其他方法可以进行 128 位数学运算?的主要内容,如果未能解决你的问题,请参考以下文章

是否有 PHP 的统计库? [关闭]

如何使用 javascript 将 wav blob 转换为其他音频类型?

是否有库函数来确定 IP 地址(IPv4 和 IPv6)在 C/C++ 中是否为私有/本地?

用于菜单的 Android 库

如何在 Java 中以给定的采样率播放声音?

是否有 .NET 库或 API 可以与/编辑 IIS 元数据库进行交互?