- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Simple Encrypted Arithmetic Library (SEAL)来自 Microsoft 密码学研究组的库。有没有办法获取seal::Ciphertext variable
的内容?我试图理解 ciphertext.h 和 ciphertext.cpp 并发现:
/**
Saves the ciphertext to an output stream. The output is in binary format and not
human-readable. The output stream must have the "binary" flag set.
@param[in] stream The stream to save the ciphertext to
@see load() to load a saved ciphertext.
*/
void save(std::ostream &stream) const;
/**
Loads a ciphertext from an input stream overwriting the current ciphertext.
@param[in] stream The stream to load the ciphertext from
@see save() to save a ciphertext.
*/
void load(std::istream &stream);
但我找不到另一个选项来获取任何 seal::Ciphertext 变量
的内容,它不是二进制流或只是指向某个内存地址的指针并将其保存为字符串。
如果你们中的任何人从上面的链接下载了 SEAL 库并在不做任何更改的情况下将其解压缩。您可以在 SEAL_2.3.1\SEAL\seal\ciphertext.h 和 SEAL_2.3.1\SEAL\seal\中找到所有对 seal::Ciphertext
允许的操作密文.cpp
最佳答案
简短的回答是,没有其他方法可以访问 SEAL 中的密文数据。 Ciphertext::data
返回的指针将使您可以直接访问密文数据,从这个意义上讲,您可以对其进行任何类型的计算,例如如果出于某种原因您想要转换为人类可读的字符串。
当然,要做到任何可理解的事情,您都需要知道密文的数据布局。在 BFV 方案中,密文由一对具有大(大小 coeff_modulus
)系数的多项式 (c0, c1) 组成。由于对具有如此大系数的多项式进行运算很不方便,因此 SEAL 2.3.1 改为使用复合 coeff_modulus
。并存储 c0 和 c1 对 coeff_modulus
中指定的每个质因数求模(表示这些因素 q1,q2,...,qk)。每个 qi 都适合一个 64 位字,因此所有这些 2k 多项式都有字长系数。
密文系数数据布局如下(内存中连续):
[ c0 mod q1 ][ c0 mod q2 ]...[ c 0 mod qk ][ c1 mod q1 ][ c1 mod q2 ]...[ c1 mod qk ]
其中每个 [ ci mod qj ] 看起来像
[ c0[0] mod qj ][ c1[0] mod qj ]...[ cn-1[0] mod qj ]
这里我用ci[k]来表示ci的第k次系数。请注意,每个系数都存储在 uint64_t
中。 .
Ciphertext::data
返回指向 c0 多项式相对于 coeff_modulus
中第一个模数的常数系数的指针,即 c0[0] mod q1。除了此系数数据外,密文还包含一些其他字段,您可以使用成员函数读取这些字段。
关于c++ - 简单加密算法库 (SEAL) 和 seal::Ciphertext 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51416347/
我正在使用 Simple Encrypted Arithmetic Library (SEAL)来自 Microsoft 密码学研究组的库。有没有办法获取seal::Ciphertext variab
下面的代码片段是有效的 public class BaseClass { public virtual void Display() { Console.WriteLine("
当当前类曾经从父类(super class)继承时,为什么我们要在方法或属性上使用 sealed 关键字?假设我们创建了一个类,并且倾向于将它的一个或多个方法暴露给对象用户,但根本不让它被继承,并使用
我试图阻止我的基类派生其方法之一,但似乎不可能以我喜欢的方式进行,我认为我做错了。 你能帮忙吗? :)我真的很想成功使用 sealed 关键字! 这里有一些代码: public class BaseC
我有一种情况想要解释编译器的行为。给出一些代码: interface IFoo { T Get(); } class FooGetter : IFoo { public int Get
A 是来自引用的 dll 的类,因此无法更改。它有一个方法 Foo(),在我的 DoFoo() 方法中调用(将 A 作为参数)。我想在不执行 Foo() 的情况下测试 DoFoo(),因为它很昂贵并且
我认为 sealed 应该包含在 C# 语言的访问修饰符列表中。有人可以告诉它被排除在外的原因吗? 最佳答案 它不是访问修饰符,它与一个类是否可以继承有关... 关于c# - 为什么 sealed 关
假设我计算了 2 的加法 或乘法 Ciphertexts并将结果放入第三个。如果我想对我的结果执行额外的数学运算 Ciphertext (目的地 Chipertext ),是否建议使用 evaluat
我正在使用 PySEAL库,它是 Microsoft SEAL 的一个分支同态加密库,用于在加密数据上实现机器学习算法。为此,我需要除以数字。在examples.py源代码中有执行加法、减法和乘法的示
我的 SEAL v2.3.1 中有这些 SEAL 设置: seal::EncryptionParameters parms; parms.set_poly_modulus("1x^2048 + 1")
A) 我无法理解这些设置之间的关系: parms.set_poly_modulus("1x^2048 + 1"); parms.set_coeff_modulus(coeff_modulus_128(
虽然我知道出于安全原因可以使用 sealed,但有些人在叶节点上使用 sealed 关键字作为优化技术。 这对优化有何帮助?为什么编译器不够聪明,无法自己解决这个问题? 最佳答案 假设您有一个在叶类中
我想模拟类似固定对象的东西,这样就不能向对象添加新成员。 Object.seal(Obj) 似乎是正确的方法,但当我尝试创建新成员时它并没有抛出异常。成员没有被创建,但它悄无声息地发生。 var O
我对密文和最后的正方形进行了一系列计算。问题是,即使有足够的噪声预算来执行平方和重新线性化(在操作之前和之后),当我解密它时,我也会得到不正确的结果。 奇怪的是,如果我解密和解码,然后在新的密文中再次
这个问题在这里已经有了答案: Is the sealed command c++ 0x or is it only microsoft who has it (3 个答案) 关闭 5 年前。 考虑以
我正在玩 java 15 中的预览密封类,我想知道为什么关键字 sealed 和 non-sealed 只适用于类和接口(interface),而不适用于方法(像其他修饰符一样)。我想具体决定哪些方法
我正在使用 FunKTiale 库执行模式匹配。然后,当我按如下方式初始化变量时: private lateinit var socket = Option.None 下面的转换是不可能的: sock
我有一个抽象类,继承时需要重写 3 个方法。但我真的很想密封另一种方法,这样它就不会被覆盖。它包含整个类工作的重要逻辑,我希望避免用户通过在他/她不应该做的地方进行覆盖来终止功能。 有办法实现这一点吗
Iron.seal 无法更新 npm 模块 Iron,这就是我在登录用户时遇到此问题的原因 var obj = { a: 1, b: 2, c: [3, 4, 5],
我正在编写一个绘制图形的脚本。我希望该图形保持完整,直到用户手动关闭它(例如单击十字)。 如果用户在 Matlab 提示符下发出绘图命令,这不应影响现有图形,但会自动打开一个新图形。 如何在 Matl
我是一名优秀的程序员,十分优秀!