首页 > 解决方案 > 如何在 Miracl 库中进行序列化?

问题描述

有没有办法在 C++ Miracl 库中进行序列化?

通常,在加密世界中,我们会在两个不同的程序中执行加密例程和解密(如 AES,RSA)例程,我希望在这些基于配对的加密中具有相同的结构,例如基于属性的加密和广播加密,即在一个程序中实现加密功能程序和解密在另一个程序中。Miracl repo thisthis中有一些示例程序。但他们在一个程序中进行加密、密钥生成和解密。

所以我需要将加密中产生的密码(主要是 G1 和 GT 中的元素,有时是大对象)转储到文件中,然后在解密程序中重新加载,有没有办法做这种工作?Miracl 或其他库中的函数?

更具体地说,我可以将 G1 中的元素保存到 bytes 吗?通过电话

G1 a;
std::cout << sizeof(a) << std::endl;

它超过 40。我可以只保存 40 个字节并重新加载吗?可能吗?

标签: c++encryption

解决方案


在 G1、G2 和 GT 类中有一个构建函数溢出和恢复。您可以使用它们将 G1 溢出到 char* 并使用 char* 恢复 G1。

For example:-

pfc.precomp_for_mult(Q);  // precomputation based on fixed point Q
char *bytes;             
int len=Q.spill(bytes);   // allocates byte array of length len
..                        // ..and spills precomputation into it  
Q.restore(bytes);         // restores Q from byte array (and deletes array)

推荐阅读