Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Full MatrixSpace of 1 by 4 dense matrices over Finite Field of size 2' and 'Symbolic Ring' !!! can anyone know how to resolve this ?

hello , i'm trying to implement mc_eliece ( case of goppa code ) on sage math and then i got this error : unsupported operand parent(s) for +: 'Full MatrixSpace of 1 by 4 dense matrices over Finite Field of size 2' and 'Symbolic Ring'

can anyone know how to solve this problem ? thanks

import numpy as np # generation du code de copa

def initialisation() :

global n;
global G;
global k;
global P;
global S
global Gp;

t=int(input("nombre maximal d'erreur"));


n=int (input("longueur du message chiffree ")); 

p=(ln(n)/ln(2));

F=GF(2^p);

R.<x>=F[];

g=(x^t +x +1)^2 ; 


L=[a for a in F.list() if g(a)!=0];


C=codes.GoppaCode(g,L) ; 

print ( "caracteristique code de copa generer"); 

print(C) ;


G=C.generator_matrix() ;  # nous venons de generer la matrice generatrice de nombre de colone n 
print( "matrice generatrice G");
print(G);

k=G.nrows(); # on recupere le nombre de ligne de la matrice G

# generons la matrice de permutation de dimension   qui est une matrice de identite dont les lignes ont ete permute 

print();



P=matrix.identity(n);  # generons la matrice de permuation , 
# nous devons toujours trouver un moyen pour permuter quelques lignes de facon aleatoire 
print("matrice de permutation P");
print(P);


S=random_matrix(GF(2),k);
print("matrice brouilleur S"); 
print(S);

#generons la cle public Gp=SGP 

Gp1=S*G;
Gp=Gp1*P;
print("cle public");
print(Gp);

print("l'erreur introduit doit etre de longeur",n,"et de poid <= ",t);

e2=list(map(int, list(input("enter l'erreur ")))); # convertion de chaine de caractere  liste d'entiers

e=matrix(GF(2),1,n);  # convertion liste en matrix vecteur // ici on impose que la longueur de e a n 

for i in range(0,n,1) :

    e[0,i]=e2[i];


print(e);

def mc_eliece():

print(Gp.nrows());
print(Gp.ncols());

print("votre message a envoye doit etre de longueur",k);

m2=list(map(int, list(input("entrer votre message"))));

print(m2);

m=matrix(GF(2),1,k);  # convertion liste en matrix vecteur , sa longueur correspond au nombre de ligne de la generatrice

# vector([v[i]/w[i] for i in range(len(v))])

for i in range(0,k,1) :

    m[0,i]=m2[i];


print(m); # on a reussi a recuperer le message m sous forme de matrice . codons le maintenant . 

print(m.nrows());


m1=matrix(GF(2),1,n);
m1=(m*Gp); #ensuite en fait m1+e , juste ici pour un soucis de conflit , on va preciser le corps de chaque variable 

print(m1);

mc=matrix(GF(2),1,n);

mc= m1+e;# here i'm suppose to do the addition of m1 and e to get mc ; but the error occure

initialisation(); mc_eliece();

Full MatrixSpace of 1 by 4 dense matrices over Finite Field of size 2' and 'Symbolic Ring' !!! can anyone know how to resolve this ?

hello , i'm trying to implement mc_eliece ( case of goppa code ) on sage math and then i got this error : unsupported operand parent(s) for +: 'Full MatrixSpace of 1 by 4 dense matrices over Finite Field of size 2' and 'Symbolic Ring'

can anyone know how to solve this problem ? thanks

import numpy as np # generation du code de copa

copa def initialisation() :

 global n;
 global G;
 global k;
 global P;
 global S
 global Gp;

 t=int(input("nombre maximal d'erreur"));


 n=int (input("longueur du message chiffree ")); 

 p=(ln(n)/ln(2));

 F=GF(2^p);

 R.<x>=F[];

 g=(x^t +x +1)^2 ; 


 L=[a for a in F.list() if g(a)!=0];


 C=codes.GoppaCode(g,L) ; 

 print ( "caracteristique code de copa generer"); 

 print(C) ;


 G=C.generator_matrix() ;  # nous venons de generer la matrice generatrice de nombre de colone n 
 print( "matrice generatrice G");
 print(G);

 k=G.nrows(); # on recupere le nombre de ligne de la matrice G

 # generons la matrice de permutation de dimension   qui est une matrice de identite dont les lignes ont ete permute 

 print();



 P=matrix.identity(n);  # generons la matrice de permuation , 
 # nous devons toujours trouver un moyen pour permuter quelques lignes de facon aleatoire 
 print("matrice de permutation P");
 print(P);


 S=random_matrix(GF(2),k);
 print("matrice brouilleur S"); 
 print(S);

 #generons la cle public Gp=SGP 

 Gp1=S*G;
 Gp=Gp1*P;
 print("cle public");
 print(Gp);

 print("l'erreur introduit doit etre de longeur",n,"et de poid <= ",t);

 e2=list(map(int, list(input("enter l'erreur ")))); # convertion de chaine de caractere  liste d'entiers

 e=matrix(GF(2),1,n);  # convertion liste en matrix vecteur // ici on impose que la longueur de e a n 

 for i in range(0,n,1) :

     e[0,i]=e2[i];


 print(e);

def mc_eliece():

 print(Gp.nrows());
 print(Gp.ncols());

 print("votre message a envoye doit etre de longueur",k);

 m2=list(map(int, list(input("entrer votre message"))));

 print(m2);

 m=matrix(GF(2),1,k);  # convertion liste en matrix vecteur , sa longueur correspond au nombre de ligne de la generatrice

generatrice # vector([v[i]/w[i] for i in range(len(v))])

 for i in range(0,k,1) :

     m[0,i]=m2[i];


 print(m); # on a reussi a recuperer le message m sous forme de matrice . codons le maintenant . 

 print(m.nrows());


 m1=matrix(GF(2),1,n);
 m1=(m*Gp); #ensuite en fait m1+e , juste ici pour un soucis de conflit , on va preciser le corps de chaque variable 

 print(m1);

 mc=matrix(GF(2),1,n);

 mc= m1+e;# here i'm suppose to do the addition of m1 and e to get mc ; but the error occure





initialisation(); 
mc_eliece();

initialisation(); mc_eliece();

Full MatrixSpace of 1 by 4 dense matrices over Finite Field of size 2' and 'Symbolic Ring' !!! can anyone know how to resolve this ?

hello , i'm trying to implement mc_eliece ( case of goppa code ) on sage math and then i got this error : unsupported operand parent(s) for +: 'Full MatrixSpace of 1 by 4 dense matrices over Finite Field of size 2' and 'Symbolic Ring'

can anyone know how to solve this problem ? thanks

import numpy as np # generation du code de copa



def initialisation() :  

    global n;
    global G;
    global k;
    global P;
    global S
    global Gp;

    t=int(input("nombre maximal d'erreur"));


    n=int (input("longueur du message chiffree ")); 

    p=(ln(n)/ln(2));

    F=GF(2^p);

    R.<x>=F[];

    g=(x^t +x +1)^2 ; 


    L=[a for a in F.list() if g(a)!=0];


    C=codes.GoppaCode(g,L) ; 

    print ( "caracteristique code de copa generer"); 

    print(C) ;


    G=C.generator_matrix() ;  # nous venons de generer la matrice generatrice de nombre de colone n 
    print( "matrice generatrice G");
    print(G);

    k=G.nrows(); # on recupere le nombre de ligne de la matrice G

    # generons la matrice de permutation de dimension   qui est une matrice de identite dont les lignes ont ete permute 

    print();



    P=matrix.identity(n);  # generons la matrice de permuation , 
    # nous devons toujours trouver un moyen pour permuter quelques lignes de facon aleatoire 
    print("matrice de permutation P");
    print(P);


    S=random_matrix(GF(2),k);
    print("matrice brouilleur S"); 
    print(S);

    #generons la cle public Gp=SGP 

    Gp1=S*G;
    Gp=Gp1*P;
    print("cle public");
    print(Gp);

    print("l'erreur introduit doit etre de longeur",n,"et de poid <= ",t);

    e2=list(map(int, list(input("enter l'erreur ")))); # convertion de chaine de caractere  liste d'entiers

    e=matrix(GF(2),1,n);  # convertion liste en matrix vecteur // ici on impose que la longueur de e a n 

    for i in range(0,n,1) :

        e[0,i]=e2[i];


    print(e);

def mc_eliece(): 

    print(Gp.nrows());
    print(Gp.ncols());

    print("votre message a envoye doit etre de longueur",k);

    m2=list(map(int, list(input("entrer votre message"))));

    print(m2);

    m=matrix(GF(2),1,k);  # convertion liste en matrix vecteur , sa longueur correspond au nombre de ligne de la generatrice  

   # vector([v[i]/w[i] for i in range(len(v))]) 

    for i in range(0,k,1) :

        m[0,i]=m2[i];


    print(m); # on a reussi a recuperer le message m sous forme de matrice . codons le maintenant . 

    print(m.nrows());


    m1=matrix(GF(2),1,n);
    m1=(m*Gp); #ensuite en fait m1+e , juste ici pour un soucis de conflit , on va preciser le corps de chaque variable 

    print(m1);

    mc=matrix(GF(2),1,n);

    mc= m1+e;# here i'm suppose to do the addition of m1 and e to get mc ; but the error occure





initialisation(); 
mc_eliece();