ntru
ntru copied to clipboard
Error while generating keys
$ ./ntru.py -v gen 706 289 129 mykey.priv mykey.pu
b
NTRU(N=706,p=289,q=129) initiated
g: Poly(x**692 - x**691 - x**649 - x**630 - x**612
- x**584 - x**565 - x**554 + x**548 - x**502 + x*
*495 + x**485 + x**468 + x**453 + x**392 + x**307
- x**298 - x**265 + x**227 - x**209 + x**198 + x**
111, x, domain='ZZ')
g coeffs: Counter({1: 11, -1: 11})
f: Poly(-x**705 - x**704 + x**703 + x**702 + x**70
0 + x**697 - x**696 - x**695 + x**694 - x**692 + x
**690 - x**689 + x**688 + x**687 - x**686 + x**685
+ x**683 + x**680 - x**678 + x**677 - x**676 + x*
*671 - x**670 + x**669 - x**667 - x**664 + x**663
+ x**662 + x**661 - x**660 + x**659 - x**658 + x**
657 - x**656 + x**655 + x**654 - x**652 + x**651 -
x**650 - x**649 - x**646 + x**645 - x**644 + x**6
43 + x**642 - x**639 + x**637 - x**634 + x**633 +
x**632 - x**631 + x**629 - x**628 + x**627 - x**62
6 - x**625 - x**624 + x**623 - x**622 - x**621 + x
**620 - x**618 - x**617 + x**614 + x**612 - x**609
- x**608 - x**607 + x**606 + x**605 - x**604 - x*
*603 + x**601 - x**600 + x**599 + x**598 - x**593
- x**591 - x**590 - x**589 - x**588 - x**587 - x**
586 + x**585 + x**581 + x**580 + x**579 + x**578 -
x**576 - x**575 + x**574 - x**573 - x**572 - x**5
71 - x**569 + x**567 + x**563 + x**562 + x**561 +
x**559 + x**555 + x**554 - x**553 + x**552 + x**55
1 + x**548 - x**547 + x**546 + x**544 - x**543 + x
**541 - x**540 + x**538 - x**537 - x**535 + x**534
+ x**532 - x**531 + x**529 + x**528 - x**527 - x*
*526 + x**525 - x**524 - x**523 - x**522 - x**521
- x**520 + x**518 + x**517 - x**515 + x**514 - x**
513 - x**511 + x**510 - x**509 - x**507 - x**506 +
x**504 + x**500 + x**498 + x**497 + x**495 - x**4
94 + x**491 - x**490 - x**489 + x**488 - x**486 -
x**485 + x**484 - x**483 + x**482 - x**481 + x**48
0 + x**478 - x**474 + x**473 - x**472 + x**471 + x
**470 + x**469 - x**468 + x**467 + x**466 + x**465
+ x**464 + x**463 - x**462 + x**460 - x**459 - x*
*458 + x**457 - x**456 - x**453 + x**452 + x**451
+ x**450 + x**448 + x**447 - x**446 + x**445 + x**
444 + x**443 - x**442 + x**440 - x**439 - x**438 +
x**433 + x**432 - x**431 - x**430 + x**427 - x**4
26 - x**424 + x**421 - x**420 + x**419 + x**417 -
x**415 - x**414 + x**413 - x**412 + x**410 + x**40
9 - x**408 - x**407 - x**406 + x**404 - x**402 + x
**401 - x**398 + x**397 - x**396 + x**395 - x**393
+ x**392 + x**390 + x**389 + x**387 + x**386 - x*
*385 + x**384 - x**383 + x**381 - x**380 + x**378
+ x**377 - x**375 + x**374 - x**370 + x**369 + x**
367 + x**366 - x**364 - x**362 - x**361 + x**360 -
x**359 + x**357 + x**356 + x**355 - x**353 + x**3
50 + x**349 + x**348 - x**347 + x**344 - x**342 +
x**340 + x**339 + x**338 + x**337 - x**336 + x**33
5 + x**334 + x**333 + x**332 - x**331 + x**328 - x
**327 - x**324 - x**323 - x**322 - x**321 + x**320
- x**319 + x**315 + x**313 + x**312 - x**311 + x*
*310 - x**309 + x**305 + x**304 + x**302 - x**301
- x**300 + x**297 + x**296 + x**295 + x**294 - x**
292 + x**290 - x**289 - x**287 + x**286 - x**285 +
x**282 + x**281 - x**280 + x**279 - x**278 + x**2
76 + x**275 - x**273 + x**271 + x**270 + x**269 +
x**267 - x**266 - x**264 - x**263 + x**261 - x**25
6 - x**255 - x**254 + x**253 + x**252 + x**251 - x
**250 - x**247 - x**245 + x**243 + x**242 - x**240
+ x**239 - x**238 - x**234 + x**233 - x**232 + x*
*230 - x**229 - x**225 - x**224 - x**223 - x**222
+ x**221 + x**219 + x**217 - x**215 - x**214 - x**
213 - x**212 + x**209 - x**208 + x**206 + x**203 +
x**201 - x**200 - x**199 + x**198 - x**197 + x**1
96 - x**195 - x**194 + x**193 - x**192 - x**191 +
x**190 - x**188 + x**187 - x**186 - x**185 + x**18
4 - x**182 - x**180 - x**179 - x**178 - x**177 - x
**174 - x**173 - x**172 - x**169 - x**168 + x**166
+ x**165 + x**163 + x**160 - x**155 - x**154 + x*
*153 - x**152 - x**150 + x**149 - x**147 - x**146
- x**145 + x**144 - x**143 + x**141 + x**140 + x**
139 - x**138 + x**137 - x**135 + x**134 - x**133 -
x**132 - x**131 + x**129 + x**128 - x**126 - x**1
25 + x**122 + x**118 + x**117 + x**116 - x**115 -
x**114 + x**113 - x**112 + x**110 - x**108 + x**10
7 + x**105 + x**102 - x**101 - x**100 - x**99 - x*
*98 - x**97 - x**92 + x**90 + x**89 - x**88 - x**8
6 + x**85 + x**82 - x**81 + x**80 - x**79 + x**77
- x**76 - x**75 - x**73 + x**69 - x**65 + x**64 -
x**62 - x**61 + x**60 - x**59 - x**55 + x**54 - x*
*53 + x**51 - x**50 - x**49 + x**47 - x**46 + x**4
4 - x**43 + x**42 + x**41 - x**40 - x**39 - x**37
+ x**34 - x**33 - x**31 - x**30 - x**27 - x**25 -
x**23 + x**22 + x**20 + x**19 - x**17 + x**14 - x*
*13 + x**12 - x**11 - x**10 + x**9 + x**6 + x**3 -
x**2 + 1, x, domain='ZZ')
f coeffs: Counter({1: 235, -1: 234})
Traceback (most recent call last):
File "./ntru.py", line 147, in <module>
generate(int(args['N']), int(args['P']), int(a
rgs['Q']), args['PRIV_KEY_FILE'], args['PUB_KEY_FI
LE'])
File "./ntru.py", line 43, in generate
ntru.generate_random_keys()
File "/data/data/com.termux/files/home/projects/
python/ntru/ntru/ntrucipher.py", line 42, in gener
ate_random_keys
self.generate_public_key(f_poly, g_poly)
File "/data/data/com.termux/files/home/projects/
python/ntru/ntru/ntrucipher.py", line 54, in gener
ate_public_key
self.f_p_poly = invert_poly(self.f_poly, self.
R_poly, self.p)
File "/data/data/com.termux/files/home/projects/
python/ntru/ntru/mathutils.py", line 41, in invert
_poly
raise Exception("Cannot invert polynomial in Z
_{}".format(p))
Exception: Cannot invert polynomial in Z_289
Hello, You can try to modify the invert_poly method to handle your case. The current code is not prepared to invert polynomials in Z_{p^2} where p is other than 2.