2016-03-27 23 views
0

私はPBCライブラリの新入生です。今私はライブラリ内にあるかもしれない奇妙な問題に悩まされています。つまり、私はelement_from_bytesと同じ要素から得ることができるバイトバッファから、element_to_bytesで要素自体を取得することはできません。PBCライブラリの同じ要素のインポートとエクスポート

は、ここに私のコードです:

#include <pbc/pbc.h> 

int main(int argc, char * argv[]) 
{ 
    pairing_t pairing; 
    FILE * file_data; 
    unsigned char buffer[1024]; 

    element_t e_G1; 
    element_t e_G2; 
    element_t e_GT; 

    file_data = fopen("a.param", "rb"); 
    fread(buffer, sizeof(char), 1024, file_data); 
    fclose(file_data); 

    pairing_init_set_buf(pairing, buffer, 1024); 

    pbc_random_set_file("/dev/urandom"); 

    element_init_G1(e_G1, pairing); 
    element_init_G1(e_G2, pairing); 
    element_init_GT(e_GT, pairing); 

    element_random(e_G1); 
    element_set(e_G2, e_G1); 
    element_to_bytes(buffer, e_G1); 
    element_from_bytes(e_G1, buffer); 

    element_random(e_GT); 
    element_to_bytes(buffer, e_GT); 
    element_from_bytes(e_G1, buffer); 

    element_printf("%B\n\ 
-----------------------------------------------\n%B\n\ 
-----------------------------------------------\n%B\n\ 
-----------------------------------------------\n%d\n\n", 
                e_G1, 
                e_G2, 
                e_GT, 
             element_is0(e_G1)); 
    return 0; 
} 

と私は得ることはここにある:ところで

O 
----------------------------------------------- 
[8021850106505818502224442208928855004938939439678477694892641266967078361854270086432817366784978788884366884435675935152080578989270423349970705389370184, 2207681943758336273091052288242865038000441662104450034566345617121836958254088636097196267885483421854988093922900438274171762807585817974640138776324140] 
----------------------------------------------- 
[7792468460669792001225496496730815439034004409253407100165449658873999461802182391001847130721570852427585544191514409272430371044941965363904582878220488, 7159904157534661386227436046498970442391860436703403633250884233122825330691897165426605400567350719613160801169558771636512036955882768503813467951267422] 
----------------------------------------------- 
1 

、私はUbuntuのに14.04のx64を使用していますし、PBCライブラリのバージョンが0.5です。ファイル「a.param」が圧縮されていないPBCフォルダからコピーされる

答えて

0

e_G1がグループG1の要素として初期化されましたが、bufferはGTの要素がシリアル化された形式で含まれています。それらは異なるサイズ(拡張フィールドなど)の異なるグループに属しているため、互換性がありません。あなたはGTの要素としてe_G1を初期化する場合は

、それは動作します:

element_random(e_GT); 
element_to_bytes(buffer, e_GT); 
element_init_GT(e_G1, pairing); 
element_from_bytes(e_G1, buffer);
関連する問題