【问题标题】:Obtaining a y value that is an integer value from our curve with a given x value从具有给定 x 值的曲线中获取一个整数值 y 值
【发布时间】:2015-11-28 21:10:30
【问题描述】:

我正在使用椭圆曲线密码学并试图从我的 ECC 方程中获取一个值。我正在使用一个传入 x 的函数,我试图循环代码,直到我得到一个整数形式的 y 值。请注意,我还使用了一个名为 InfInt 的独立库(它处理大整数值)。

基本上,我的目标是找到一个 x,当它代入方程 y^2 = x^3 + x + 24 时,会得到一个不是十进制数的 y。我在获得正确结果时遇到了很多问题。我处理这个问题的方式有解决方案吗?

主代码中的代码______________________________________________________________ //为“真正的”随机x创建我们需要的种子 srand(时间(NULL));

//TEST PROMPT for getting a random point
int x = rand();
cout << ("Given x: ") << (x) << endl <<endl;
InfInt y;
int i = 0;

//TEST to get an exact point, not a decimal value
//while (i == 0) {
    y = getPoint(x);
    if (y == NULL) {
        cout << ("Bad X") << endl;
        x = rand();
        cout << ("Next Attempt at x :") << (x) << endl;
    }
    else {
        cout << ("Success!") << endl;
        cout << ("Our point is: (") << (x) << (",") << (y) << (")") << endl;
        i++;
    }
//}

获取积分代码______________________________________________________________ InfInt getPoint(int x) {

double xx = pow(x, 3) + x + 24;

xx = sqrt(xx);
cout << (xx) << endl;
if (xx == int(xx)) {
    y = int(xx);

} else {
    cout << ("Failed!");
        y = NULL;
}

return InfInt(y);

}

【问题讨论】:

  • 我对这部分有点困惑:“......从给定的整数 x 中获取正确的 y 值,而不切断多余的浮点数?”你能试着重申你想要xy 是什么吗?我的印象是整数应该去掉小数。
  • 我很抱歉,这令人困惑。我要说的是,我试图循环遍历 x 的值,直到得到一个不是十进制数的 y。本质上,我的目标是找到一个 x,当它插入方程 y^2 = x^3 + x + 24 时,会给我一个不是十进制数的 y。是不是更清楚了?
  • 好吧,这更有意义。我建议编辑您的问题以帮助其他人理解[:无论如何,请注意long long y = xx 在您的getPoint() 函数的最后是如何被赋值的。这意味着无论您的函数是否通过ifelse 块,它都将始终分配给xx。改变它有帮助吗?
  • 不幸的是,它没有。不过我确实把那部分拿出来了。那是以前尝试使代码正常运行的尝试。

标签: c++ cryptography curve


【解决方案1】:

选择一个目标,比如 y = 3; y^2 = 9。找到一个 x 值 x1,其结果为 y1 = 3。假设您的方程是连续的,那么您的目标 x 值将介于 x1 和 x2 之间。使用二分搜索在机器允许的实际值范围内找到最接近的 x 值。

或者,尝试不同的 x1 和 x2,直到找到一对之间至少有一个整数。

鉴于在有限计算机上表示实数的实际限制,您可能只能找到一个适用于有限小数位数的解决方案:y = 3.0000000000120694... 或其他任何值。

【讨论】:

    猜你喜欢
    • 2018-11-02
    • 2018-08-13
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2016-01-28
    相关资源
    最近更新 更多