【问题标题】:Importing and exporting the same element in PBC Library在 PBC 库中导入和导出相同的元素
【发布时间】:2016-03-27 23:39:16
【问题描述】:

我是 PBC 图书馆的新生。现在我一直被图书馆内的一个奇怪问题所困扰。也就是说,我无法从字节缓冲区中获取带有 element_from_bytes 的元素本身,该缓冲区包含我可以通过 element_to_bytes 从同一元素中获取的内容。

这是我的代码:

#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.14,文件“a.param”是从未压缩的 PBC 文件夹中复制的

【问题讨论】:

    标签: c encryption cryptography


    【解决方案1】:

    e_G1 被初始化为 G1 组的一个元素,但 buffer 包含一个 GT 的序列化元素。这些是不兼容的,因为它们位于具有不同大小(扩展字段等)的不同组中。

    如果你将e_G1初始化为GT的一个元素,那么它就会起作用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      相关资源
      最近更新 更多