Дипломдық ЖҰмыс 5B100200 «Ақпараттық қауіпсіздік жүйелері»



бет5/14
Дата19.01.2022
өлшемі1,11 Mb.
#129475
түріДиплом
1   2   3   4   5   6   7   8   9   ...   14
Байланысты:
Дипломдық жұмыс Talgat

С/С++

Java

Python

OpenSSL

java.math.BigInteger

PyCryptodome

Gcrypt

java.math.BigDecimal

Sage

GNU Multi-Precision Library(GMP)

Maple

General Multiprecision Python Project

Boost.Multiprecision




Numpy

NTL







Cropto++









      1. C/C++ үлкен сандармен жұмыс жасауға арналған кітапханалар. GMP кітапханасы

C – 1969-1973 жылдары Bell Labs қызметкері Деннис Ритчи Би тілінің дамуы ретінде ойлап тапқан, статистикалық типтелген компиляцияланатын программалау тілі.

C++ – 1983 жылы Bell Labs фирмасының қызметкері Бьерн Страуструп ойлап тапқан статикалықтиптелген, компиляцияланатын программалау тілі [11].

OpenSSL - ашық бастапқы коды бар толық криптографиялық кітапхана, HTTPS веб-хаттамасында пайдаланылатын SSL/TLS кеңейтілуінен кеңінен танымал. Оған қоса, OpenSSL-да үлкен сандармен жұмыс істеуге арналған кірістірілген механизмі бар. Төменде үлкен санды квадратқа қою OpenSSL кітапханасының көмегімен жүзеге асқаны көрсетілген (9 - сурет):

#include

#include

#include
int main() {

BN_CTX *ctx = BN_CTX_new();

BIGNUM *mybignum = nullptr;

BIGNUM *mul = BN_new();


BN_dec2bn(&mybignum, "18446744073709551615"); // 2^64-1

BN_mul(mul, mybignum, mybignum, ctx);


char *dec = BN_bn2dec(mul);

if (dec) {

printf("%s\n", dec);

OPENSSL_free(dec);

}

BN_free(mybignum);



BN_free(mul);

}



Ескертпе – [12] әдебиет көзінен алынған



Сурет 9 OpenSSL кітапханасының көмегімен үлкен санды квадратқа қою

Gcrypt - кітапханасы GnuPG жобасынан туған және шифрлаумен, соның ішінде үлкен сандармен жұмыс істеу үшін негізгі функцияларды ұсынады. Осы кітапхананы қолданып, мысалды қайта көрейік (10 - сурет):




#include

#include


int main() {

unsigned long long mybignum = 18446744073709551615ull; // 2^64-1

gcry_mpi_t max_ul = gcry_mpi_new(64);

gcry_mpi_t mul = gcry_mpi_new(128);


size_t scanned = 0;

gcry_mpi_scan(&max_ul, GCRYMPI_FMT_USG, &mybignum, sizeof(unsigned long long), &scanned);

assert(scanned==sizeof(unsigned long long) && "failed to scan the whole number");
gcry_mpi_mul(mul, max_ul, max_ul);

gcry_mpi_dump(mul);


gcry_mpi_release(mul);

gcry_mpi_release(max_ul);

}


Ескертпе – [12] әдебиет көзінен алынған



Сурет 7 Gcrypt кітапханасының көмегімен үлкен санды квадратқа қою

Boost.Multiprecision – негізінде бұл кітапхана үлкен сандармен жұмыс жасамайды, тек олармен жұмыс жасайтын С++ интерфейсінен тұрады (8 - сурет):




#include

#include


int main() {

using namespace boost::multiprecision;

int128_t mybignum = 18446744073709551615ull;

std::cout << mybignum * mybignum << std::endl;

}

Ескертпе – [12] әдебиет көзінен алынған



Сурет 8 Boost.Multiprprecision кітапханасының көмегімен үлкен санды квадратқа қою

GMP кітапханасы

GMP немесе GNU Multi-Precision Library – бүтін және рационалды сандарды есептеуге арналған Си тілінде жазылған кітапхана. Кітапхана криптографиялық мақсатта және компьютерлік есептеулер үшін кеңінен қолданылады. Бұл кітапхана gcc жинау үшін қажет [13].

GMP немесе GNU Multi-Precision Library (GNU жобасының бір бөлігі) – бұл бүтін сандармен, рационалды сандармен және құбылмалы нүктемен жұмыс істейтін еркін дәлдіктегі арифметикаға арналған Си тілінде жазылған кітапхана. GMP жұмыс істейтін машинада қолжетімді жадтан басқа практикалық дәлдік шектеулері жоқ. GMP функциялардың бай жиынтығы бар, ал функциялардың қарапайым интерфейсі бар.

GMP-ның негізгі мақсаты қосымшалар мен криптография саласындағы зерттеулер, интернетте қауіпсіздікті қамтамасыз етуге арналған қосымшалар, алгебра жүйелері, есептеу алгебрасының зерттеулері және т.б. болып табылады.

GMP кішкентай операндтар үшін де, үлкен операндтар үшін де барынша жылдам болу үшін мұқият жобаланған. Жылдамдыққа негізгі арифметикалық үлгі ретінде толық сөздерді пайдалану, жылдам алгоритмдерді пайдалану, көп процессорлар мен жылдамдыққа жалпы назар аудару үшін ең көп таралған ішкі циклдер үшін жоғары оңтайландырылған жинау коды есебінен қол жеткізіледі.

GMP-ның алғашқы шығарылымы 1991 жылы жасалды. Ол үнемі дамуда және қолданыста, ал жаңа шығарылымы жылына бір рет шығарылады.

6 нұсқасынан бастап, GMP Қос лицензия, GNU LGPL v3 және GNU GPL v2 арқылы таратылады

Бұл лицензиялар кітапхананы пайдалану, алмасу және жақсарту үшін тегін жасайды, сондай-ақ нәтижелерді беруге мүмкіндік береді. GNU лицензиялары еркіндік береді, бірақ еркін емес программаларды пайдалануға қатаң шектеулер қояды.

GMP-ның келесідей кітапханалары бар:



  • libgmp.a (C тілінде);

  • libgmpxx.a (С++ тілінде).

GMP бірнеше функция санаты бар:

  • Жоғары деңгейдегі бүтін арифметикалық функциялар (mpz). Бұл категорияда шамамен 150 арифметикалық және логикалық функциялар;

  • Жоғары деңгейдегі рационалды арифметикалық функциялар (mpq). Бұл санат 35 функциядан тұрады, бірақ mpz барлық функцияларды, оларды алымға және бөлгішке бөлек қолдана алады;

  • Өзгермелі нүктемен жоғары деңгейлі арифметикалық функциялар (mpf). Бұл GMP функциясының санаты C `double' түрі қолданба үшін жеткілікті дәлдікті бермесе қолданылады. Бұл категорияда шамамен 70 функция. Жаңа жобаларда mpf орнына әлдеқайда толық GMP mpfr кеңейтілген кітапханасын пайдалану ұсынылады;

  • C++ класстарының негізіндегі Интерфейс жоғарыда аталған барлық үшін. (C функциялары мен түрлері, әрине, C++ тікелей пайдаланылуы мүмкін);

  • Төмен деңгейлі оң-тұтас, күрделі пайдалану және өте төмен қызметтік функциялар mrpcategory. Жадыны басқару орындалмайды; шақырушы тарап нәтижелер үшін жеткілікті орынды қамтамасыз етуге тиіс. Функциялардың жиынтығы шақырушы интерфейс сияқты әрдайым тұрақты емес. Бұл функциялар ең аз мәнді сөз көрсеткішінен және осы аргументте қанша аяқ-қол (= сөз) бар екенін көрсететін бүтін өлшемнен тұратын жұп түрінде кіріс аргументтерін қабылдайды. Басқа санаттардағы функциялар барлық есептеулерге дерлік mpn тудырады. Осы функциялардың шамамен 60-ы жария болып табылады.

Төменде GMP кітапханасында құрастырылған санның факториялын есептейтін программа көрсетілген (9 - сурет):





Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   14




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет