- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 OpenSSL 实现 Shamir secret 共享。我在解密消息时遇到了很多麻烦!
我尝试了几种解密实现,这两种都是: http://www.cs.cornell.edu/courses/cs754/2001fa/307.pdf
还有这个(引用了上面的论文,但使用了不同的方法):
(请注意,我知道计算 u2
时存在拼写错误)
我相信我的问题可能是在使用 BIGNUM 值表示关键数字对 ik/(ik-ij) 进行拉格朗日插值时出现精度损失。我编写了一个小函数,用于将 int
(如关键数字)转换为 BIGNUM 值。
我不会为您提供 key 生成代码,因为我非常确定它可以正常工作。以下是我链接的 JPEG(不是 PDF)的实现:
int i;
for (i = 0; i < 3; i++) {
aij[i] = BN_new();
BN_mod_exp(aij[i], c.c1, key[i].key, p, ctx);
}
BIGNUM *ik = BN_new();
BIGNUM *ij = BN_new();
BIGNUM *denomTmp = BN_new();
BIGNUM *numTmp = BN_new();
BIGNUM *divTmp = BN_new();
BIGNUM *accum = BN_new();
int j, k;
/* Lagrange Interpolation */
for (j = 0; j < 3; j++) {
BN_one(accum);
for (k = 0; k < 3; k++) {
if(j == k) continue;
else {
ik = int2BN(key[k].keynum); //int2BN is my function for converting ints to BNs
ij = int2BN(key[j].keynum);
BN_sub(denomTmp, ik, ij);
BN_div(divTmp, NULL, ik, denomTmp, ctx);
BN_mul(accum, accum, divTmp, ctx);
}
}
cij[j] = BN_new();
BN_mod(cij[j], accum, q, ctx); // accum % q = cij[j]
}
// Now for the second half...
int a;
u1 = BN_new();
BIGNUM *u1tmp = BN_new();
BN_one(u1);
for (a = 0; a < 3; a++) {
BN_mod_exp(u1tmp, aij[a], cij[a], p, ctx);
BN_mod_mul(u1, u1, u1tmp, p, ctx);
}
当我在 cij[] 中输出计算值时,使用键 [2, 4, 5] 时我得到:2, -5, 0。根据我手工计算的结果,它实际上应该是 10/3、5 和 8/3。有什么办法可以解决这个问题吗?
您发现我的代码还存在其他问题吗?提前致谢。
最佳答案
当你进行 sub、div、mul 时,你需要进行模运算。即 BN_mod_sub、分母上的 BN_mod_inverse 和 BN_mod_mul。
关于c - Shamir secret 共享的 OpenSSL 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13189544/
作为一个研究项目,我正在为个人云用户开发一种安全 key 共享机制。为此,我使用 Shamir 算法来分割和重建 key 。我必须在客户端这样做。所以我必须使用JS或JQuery。如果有人在 Jque
我正在尝试在 C (Arduino) 中实现 Feige Fiat Shamir 身份识别方案 并且它有效,但仅当 e = 0 时。当 e = 1 时,它不起作用。 我怎样才能让它发挥作用? #inc
我以前发过类似的问题,所以我提前道歉,但我无法找到我在这里出错的地方。 我正在使用 C 中的 OpenSSL 的 BIGNUM 库实现 Shamir secret 共享。 在我做了一轮拉格朗日插值后,
我正在尝试使用 OpenSSL 实现 Shamir secret 共享。我在解密消息时遇到了很多麻烦! 我尝试了几种解密实现,这两种都是: http://www.cs.cornell.edu/cour
我读到牛顿多项式具有更好的计算复杂性,但 Shamir 改用拉格朗日多项式。有谁知道不使用牛顿多项式是否有特殊原因? 谢谢 最佳答案 我只能猜测: Other than that, Lagrange
我正在搜索关于椭圆曲线标量乘法的所谓“Strauss-Shamir 方法”的信息。这是一种计算k1 · P + k2 · Q的方法在大约 log2( k ) 次添加和加倍中,其中 k1, k2 k。假
我尝试使用 SecretSharing在 Crypto++ 中上课,但我无法让它工作。 这是我的代码: using namespace CryptoPP; void secretSharing(){
我正试图找到一个可以让我做的类(class)或其他东西 Shamir's Secret Sharing . 我找到了一个 C# 程序,它允许您执行此操作,但它不提供源代码。我只是想知道是否有人已经开设
已在 Azure Kubernetes 上安装 Vault,并使用 Azure Key Vault 配置自动解封。最初部署后,Vault 状态返回,密封类型为“azurekeyvault”,密封为 t
我是一名优秀的程序员,十分优秀!