Yegor, угу, тока на С она, но нам нужны не сорцы а libgmp-3.dll
воть импорт всех функций которые для РСА могут потребоваться:
delphi Код:
mpz_t = record
mp_alloc,
mp_size: Integer;
mp_d: Pointer;
end;
const
gmpdll = 'libgmp-3.dll';
procedure mpz_init(var Dest: mpz_t); cdecl;
external gmpdll name '__gmpz_init';
procedure mpz_init_set_ui(var Dest: mpz_t; Src: Cardinal); cdecl;
external gmpdll name '__gmpz_init_set_ui';
procedure mpz_clear(var Dest: mpz_t); cdecl;
external gmpdll name '__gmpz_clear';
procedure mpz_powm(var Dest: mpz_t; const Base, Exponent, Modulus: mpz_t); cdecl;
external gmpdll name '__gmpz_powm';
procedure mpz_powm_ui(var Dest: mpz_t; var Base: mpz_t; Exponent: Cardinal;
const Modulus: mpz_t); cdecl;
external gmpdll name '__gmpz_powm_ui';
function mpz_probab_prime_p(var Src: mpz_t; Repetitions: Integer): Integer; cdecl;
external gmpdll name '__gmpz_probab_prime_p';
procedure mpz_add_ui(var Dest: mpz_t; var Src1: mpz_t; Src2: Cardinal); cdecl;
external gmpdll name '__gmpz_add_ui';
procedure mpz_random(var Dest: mpz_t; MaxSize: Integer); cdecl;
external gmpdll name '__gmpz_random';
procedure mpz_nextprime(var Dest: mpz_t; var Src: mpz_t); cdecl;
external gmpdll name '__gmpz_nextprime';
procedure mpz_mul(var Dest: mpz_t; var Src1, Src2: mpz_t); cdecl;
external gmpdll name '__gmpz_mul';
procedure mpz_sub_ui(var Dest: mpz_t; var Src1: mpz_t; Src2: Cardinal); cdecl;
external gmpdll name '__gmpz_sub_ui';
function mpz_invert(var Dest: mpz_t; var Src, Modulus: mpz_t): Integer; cdecl;
external gmpdll name '__gmpz_invert';
function mpz_get_str(Dest: PAnsiChar; Base: Integer; var Src: mpz_t): PAnsiChar; cdecl;
external gmpdll name '__gmpz_get_str';
procedure mpz_mul_ui(var Dest: mpz_t; var Src1: mpz_t; Src2: Cardinal); cdecl;
external gmpdll name '__gmpz_mul_ui';
procedure mpz_mul_si(var Dest: mpz_t; var Src1: mpz_t; Src2: Integer); cdecl;
external gmpdll name '__gmpz_mul_si';
procedure mpz_mod(var Dest: mpz_t; var Src1,Src2: mpz_t); cdecl;
external gmpdll name '__gmpz_mod';
function mpz_cmp_si(var Src1: mpz_t; Src2: Integer): Integer; cdecl;
external gmpdll name '__gmpz_cmp_si';
procedure mpz_cdiv_q(var Dest: mpz_t; var Src1, Src2: mpz_t); cdecl;
external gmpdll name '__gmpz_cdiv_q';
function mpz_size(var Src1: mpz_t): Integer; cdecl;
external gmpdll name '__gmpz_size';
procedure mpz_import(var rop: mpz_t; count, order, size, endian,
nails: Cardinal; const op); cdecl;
external gmpdll name '__gmpz_import';
procedure mpz_export(var rop, count; order, size, endian,
nails: Cardinal; const op: mpz_t); cdecl;
external gmpdll name '__gmpz_export';
реализации функций шифрования/дешифрования и генерации ключей пока публиковать не буду...
Добавлено через 1 час 8 минут
libgmp-3.dll кстати можно взять из l2encdec, он тоже на ней работает