2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Генерация 128битных чисел.
Сообщение21.10.2013, 21:15 
В качестве семестрового проекта по одному из предметов нужно реализовать алгоритм RSA на языке VHDL. С самим проектом особых проблем нет, синтезировали код, реализующий шифрование и дешифрование с помощью алгоримта Монтгомери. Проблема заключается вот в чем: нужно хорошо протестировать алгоритм. Т.е. банально нужно где-то достать числа ${M,e,n}$ 128 бит каждое, при этом $n$ и $e$ должны быть простые. И соответственно нужно знать $C=M^{e} \mod n$. Чтобы потом была возможность проверить правильность действия нашего алгоритма, т.е. мы отправляем на сервер известные ${M,e,n}$, и сервер выдаст нам $C$ (используя наш алгоритм). Так вот банально не понятно, где брать эти эталонные значения? Я думал написать программу в матлабе, но он не работает с 128битными числами. Как быть?

 
 
 
 Re: Генерация 128битных чисел.
Сообщение22.10.2013, 04:08 
Аватара пользователя
Вот простенький код на PARI/GP, который выдает десяток случайных [M,e,n] и соответствующих им C:
Код:
for(i=1,10, p=precprime(random(2^64)); q=precprime(random(2^64)); n=p*q; until( gcd(n,e)==1, e=random(n); ); M=random(n); C=lift(Mod(M,n)^e); print([M,e,n,C]) )

[92324076068152348392396050199171398543, 61161466278004692696635535925646425757, 100379438623353492586158237517877141663, 95425946134096184836840400902520041900]
[39725355377896942864558907969158291699, 4425760167942146270634014424997568408, 71467488372362487059868579917987584933, 12280847957076240132550807476181375574]
[19091240432037158202020101982931449280, 6582212220313063901582051426827938352, 21374054975918984291552488187653091123, 16503957035038443774690838445430579921]
[91330654100750911219874626478062448142, 120714875690965638152220274705346408996, 170834867372998034311407198440726277961, 155347332733240454017009653066478596894]
[1840124556080569190223646386943381362, 1787652306350906737201097968231792675, 2771948467470956493721871658480249563, 466591710028013615320829218750887815]
[1394411909034588367983144204123069947, 5140292990779940569607046063110961894, 5242411607616161992464887746848276517, 4270541316375543775977404332438639297]
[108655816595782966287532775800461923885, 29087302264611398135147748873824723164, 160962440611914572205169895376086385043, 41135968380293482713045085742871225629]
[708960328092001297360767181772013510, 256312822902709691885057701003918598, 725270641410148203950647350116868869, 468087577599341997516123215592833334]
[41650072913984188230638619109854742429, 20483323754408692269772146506246125943, 78650034349130976651585520403386646927, 43805175103935617177580244641080285062]
[11896831049187126414467678607700712162, 37321527668304770108955021270309545472, 39943298990790011423397346336860318251, 38963475060946622336066711015673528256]

 
 
 
 Re: Генерация 128битных чисел.
Сообщение22.10.2013, 11:44 
maxal
Спасибо! Как раз то, что нужно. Уже ставлю себе PARI/GP.
Маленький вопрос, а PARI/GP работает с бинарными числами? Т.е. можно потом все числа в двоичном виде представить?

 
 
 
 Re: Генерация 128битных чисел.
Сообщение22.10.2013, 12:29 
Аватара пользователя
GAttuso
команда binary(m) выдает вектор битов двоичного представления m

 
 
 
 Re: Генерация 128битных чисел.
Сообщение22.10.2013, 19:04 
Премного благодарен!

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group