Here's my attempts at the Chor-Rivest cryptosystem (an exercise in the use
of finite fields):

p:=7   -- these are the values used in the example in "Handbook of Applied
Cryptography" by Menezes at al
h:=4
f:POLY(PF p):=x^h+reduce(+,[(random(p-1)+1)*x^(i-1) for i in 0..p-1]) --
create a random monic polynomial of degree h
irreducible?(f)  -- test and repeat last two lines until "true"
F:=FFP(PF p,f)
x:=generator()$F
g:=random()$F;primitive?(g) -- repeat until "true"
d:=random(size()$F-2)
a:=[discreteLog(g,x+i) for i in 0..p-1]
c:=[(a.i+d)::ZMOD(size()$F-1) for i in 1..p] -- this is the public key
message:=[1,0,1,1,0,0,1]  -- each message block is of length p and must
contain h zeros
ct:=reduce(+,[message.i*c.i for i in 1..p])::ZMOD(size()$F-1)  -- this
number is the ciphertext
r:=ct-d*(dimension()$F::NNI)::ZMOD(ord)
u:=g^convert(r)

And now, this is the problem: to complete the decryption we have to solve
u+f over PF(p) - this can be done by simply evaluating u+f for all values of
PF(p).  But u and f are two different types...  where do I go from here?

Thanks,
Alasdair

On 23 May 2007 15:58:21 +0200, Martin Rubey <[EMAIL PROTECTED]>
wrote:

Dear Alasdair,

(redirecting to axiom-math, where usage questions belong)

"Alasdair McAndrew" <[EMAIL PROTECTED]> writes:

> In experimenting with the Chor-Rivest knapsack cryptosystem, I have the
> problem of adding two polynomials: one is the defining polynomial of the
> field, and the other is a field element.
>
> But the command
>
> definingPolynomial()$F+u

could you just send me the definition of F? (i.e., code)

Martin


_______________________________________________
Axiom-mail mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/axiom-mail

Reply via email to