Biginteger на Objective-c

Может ли кто-нибудь предоставить код для BigInteger реализации в objective-c, который предоставляет функцию PowMod?

Ответы

Ответ 1

Я надеюсь, что не поздно ответить на эту тему.

Вы можете попробовать " 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);

Ответ 2

Как простая библиотека C, openssl BN должен иметь возможность сделать это.

BN_mod_exp() вычисляет a к p-й степени по модулю m (r = a ^ p% m). Эта функция использует меньше времени и пространства, чем BN_exp().

Ответ 4

Ближайший встроенный класс в библиотеках Cocoa NSDecimalNumber, который обеспечивает арифметику base-10 (и поэтому может обрабатывать целочисленные- только арифметика) для показателя диапазона mantissa x 10 ^, где мантисса является 38-битным поплавком, а показатель - от -128 до 128. Если это покрывает диапазон, который вам нужен, существуют методы умножения и мощности. В противном случае, поскольку Objective-C является надмножеством C, любая реализация С++, которую вы можете найти, будет достаточной.

Ответ 5

Я покачал свою собственную оболочку вокруг GMP. Раньше я никогда не использовал сторонних библиотекарей BigNum ObjC, но у меня были эти закладки: RSMath, в котором используются функции OpenSSL bignum, и MPInteger, который использует GMP.