16

BigInteger任何人都可以为提供 PowMod 函数的objective-c 中的实现提供代码吗?

4

5 回答 5

10

我希望现在回答这个问题还为时不晚。

您可以尝试开源和免费的“ LibTomMath ”(作者将此项目作为公共领域赠送)。它开箱即用,无需任何配置,只需将所有 bn_*.c 和 tommath*.h 放入您的 Xcode 项目,您就可以开始使用了。

#import "tommath.h"

mp_int number1, number2, number3;

mp_init(&number1);
mp_init(&number2);
mp_init(&number3);

mp_read_radix(&number1, "0a120edfff558c98a73015d5d67e8990", 16);
mp_read_radix(&number2, "12e6f45d698c7b7009a841c1348d6ff4", 16);

mp_mul(&number1, &number2, &number3);

char output[1000];
mp_toradix(&number3, output, 16);
NSLog(@"number3:%s", output);

mp_div(&number3, &number1, &number2, NULL);
mp_toradix(&number2, output, 16);
NSLog(@"number2:%s", output);
于 2009-12-11T10:52:37.113 回答
7

作为普通的 C 库,openssl 的BN应该可以做到。

BN_mod_exp()计算 a 的 p 次幂模 m (r=a^p % m)。此函数比 BN_exp() 使用的时间和空间更少。

于 2009-08-04T13:20:26.830 回答
7

你可以试试https://github.com/kirsteins/JKBigInteger跟Java的BigInteger类差不多。它有你可以组合的 mod 和 pow 方法。

于 2013-07-31T06:17:34.423 回答
4

Cocoa 库中最接近的内置类NSDecimalNumber为尾数 x 10^exponent 范围提供 base-10 算术(因此可以处理仅整数算术),其中尾数是 38 位浮点数,指数是 -128 到 128。如果涵盖了您需要的范围,有乘法和幂法。否则,由于 Objective-C 是 C 的超集,因此您可以找到任何 bigint 的 C 实现就足够了。

于 2009-08-04T12:06:10.463 回答
2

很久以前,我曾经在 GMP 周围滚动过一次自己的包装。我以前从未使用过任何第三方 BigNum ObjC 库,但我将这些添加为书签:使用 OpenSSL bignum 函数的RSMath和使用 GMP的MPInteger 。

于 2009-08-04T20:43:23.317 回答