当前位置: 首页>>代码示例>>Java>>正文


Java Utils.bit方法代码示例

本文整理汇总了Java中net.i2p.crypto.eddsa.Utils.bit方法的典型用法代码示例。如果您正苦于以下问题:Java Utils.bit方法的具体用法?Java Utils.bit怎么用?Java Utils.bit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在net.i2p.crypto.eddsa.Utils的用法示例。


在下文中一共展示了Utils.bit方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: scalarMultiplyGroupElement

import net.i2p.crypto.eddsa.Utils; //导入方法依赖的package包/类
/**
 * Scalar multiply the group element by the field element.
 *
 * @param g The group element.
 * @param f The field element.
 * @return The resulting group element.
 */
public static GroupElement scalarMultiplyGroupElement(final GroupElement g, final FieldElement f) {
    final byte[] bytes = f.toByteArray();
    GroupElement h = curve.getZero(GroupElement.Representation.P3);
    for (int i=254; i>=0; i--) {
        h = doubleGroupElement(h);
        if (Utils.bit(bytes, i) == 1) {
            h = addGroupElements(h, g);
        }
    }

    return h;
}
 
开发者ID:NoYouShutup,项目名称:CryptMeme,代码行数:20,代码来源:MathUtils.java

示例2: GroupElement

import net.i2p.crypto.eddsa.Utils; //导入方法依赖的package包/类
/**
 * Creates a group element for a curve from a given encoded point.
 * <p>
 * A point (x,y) is encoded by storing y in bit 0 to bit 254 and the sign of x in bit 255.
 * x is recovered in the following way:
 * <p><ul>
 * <li>x = sign(x) * sqrt((y^2 - 1) / (d * y^2 + 1)) = sign(x) * sqrt(u / v) with u = y^2 - 1 and v = d * y^2 + 1.
 * <li>Setting β = (u * v^3) * (u * v^7)^((q - 5) / 8) one has β^2 = +-(u / v).
 * <li>If v * β = -u multiply β with i=sqrt(-1).
 * <li>Set x := β.
 * <li>If sign(x) != bit 255 of s then negate x.
 *
 * @param curve The curve.
 * @param s     The encoded point.
 */
public GroupElement(final Curve curve, final byte[] s) {
    FieldElement x, y, yy, u, v, v3, vxx, check;
    y = curve.getField().fromByteArray(s);
    yy = y.square();

    // u = y^2-1
    u = yy.subtractOne();

    // v = dy^2+1
    v = yy.multiply(curve.getD()).addOne();

    // v3 = v^3
    v3 = v.square().multiply(v);

    // x = (v3^2)vu, aka x = uv^7
    x = v3.square().multiply(v).multiply(u);

    //  x = (uv^7)^((q-5)/8)
    x = x.pow22523();

    // x = uv^3(uv^7)^((q-5)/8)
    x = v3.multiply(u).multiply(x);

    vxx = x.square().multiply(v);
    check = vxx.subtract(u);            // vx^2-u
    if (check.isNonZero()) {
        check = vxx.add(u);             // vx^2+u

        if (check.isNonZero())
            throw new IllegalArgumentException("not a valid GroupElement");
        x = x.multiply(curve.getI());
    }

    if ((x.isNegative() ? 1 : 0) != Utils.bit(s, curve.getField().getb() - 1)) {
        x = x.negate();
    }

    this.curve = curve;
    this.repr = Representation.P3;
    this.X = x;
    this.Y = y;
    this.Z = curve.getField().ONE;
    this.T = this.X.multiply(this.Y);
}
 
开发者ID:ubirch,项目名称:ubirch-scala-utils,代码行数:60,代码来源:GroupElement.java

示例3: GroupElement

import net.i2p.crypto.eddsa.Utils; //导入方法依赖的package包/类
/**
 * Creates a group element for a curve from a given encoded point.
 * <p>
 * A point $(x,y)$ is encoded by storing $y$ in bit 0 to bit 254 and the sign of $x$ in bit 255.
 * $x$ is recovered in the following way:
 * </p><ul>
 * <li>$x = sign(x) * \sqrt{(y^2 - 1) / (d * y^2 + 1)} = sign(x) * \sqrt{u / v}$ with $u = y^2 - 1$ and $v = d * y^2 + 1$.
 * <li>Setting $β = (u * v^3) * (u * v^7)^{((q - 5) / 8)}$ one has $β^2 = \pm(u / v)$.
 * <li>If $v * β = -u$ multiply $β$ with $i=\sqrt{-1}$.
 * <li>Set $x := β$.
 * <li>If $sign(x) \ne$ bit 255 of $s$ then negate $x$.
 * </ul>
 *
 * @param curve The curve.
 * @param s The encoded point.
 */
public GroupElement(final Curve curve, final byte[] s) {
    FieldElement x, y, yy, u, v, v3, vxx, check;
    y = curve.getField().fromByteArray(s);
    yy = y.square();

    // u = y^2-1
    u = yy.subtractOne();

    // v = dy^2+1
    v = yy.multiply(curve.getD()).addOne();

    // v3 = v^3
    v3 = v.square().multiply(v);

    // x = (v3^2)vu, aka x = uv^7
    x = v3.square().multiply(v).multiply(u);

    //  x = (uv^7)^((q-5)/8)
    x = x.pow22523();

    // x = uv^3(uv^7)^((q-5)/8)
    x = v3.multiply(u).multiply(x);

    vxx = x.square().multiply(v);
    check = vxx.subtract(u);            // vx^2-u
    if (check.isNonZero()) {
        check = vxx.add(u);             // vx^2+u

        if (check.isNonZero())
            throw new IllegalArgumentException("not a valid GroupElement");
        x = x.multiply(curve.getI());
    }

    if ((x.isNegative() ? 1 : 0) != Utils.bit(s, curve.getField().getb()-1)) {
        x = x.negate();
    }

    this.curve = curve;
    this.repr = Representation.P3;
    this.X = x;
    this.Y = y;
    this.Z = curve.getField().ONE;
    this.T = this.X.multiply(this.Y);
}
 
开发者ID:cping,项目名称:RipplePower,代码行数:61,代码来源:GroupElement.java

示例4: GroupElement

import net.i2p.crypto.eddsa.Utils; //导入方法依赖的package包/类
/**
 * Creates a group element for a curve from a given encoded point.
 * <p>
 * A point (x,y) is encoded by storing y in bit 0 to bit 254 and the sign of x in bit 255.
 * x is recovered in the following way:
 * <p><ul>
 * <li>x = sign(x) * sqrt((y^2 - 1) / (d * y^2 + 1)) = sign(x) * sqrt(u / v) with u = y^2 - 1 and v = d * y^2 + 1.
 * <li>Setting β = (u * v^3) * (u * v^7)^((q - 5) / 8) one has β^2 = +-(u / v).
 * <li>If v * β = -u multiply β with i=sqrt(-1).
 * <li>Set x := β.
 * <li>If sign(x) != bit 255 of s then negate x.
 *
 * @param curve The curve.
 * @param s The encoded point.
 */
public GroupElement(final Curve curve, final byte[] s) {
    FieldElement x, y, yy, u, v, v3, vxx, check;
    y = curve.getField().fromByteArray(s);
    yy = y.square();

    // u = y^2-1    
    u = yy.subtractOne();

    // v = dy^2+1
    v = yy.multiply(curve.getD()).addOne();

    // v3 = v^3
    v3 = v.square().multiply(v);

    // x = (v3^2)vu, aka x = uv^7
    x = v3.square().multiply(v).multiply(u);    

    //  x = (uv^7)^((q-5)/8)
    x = x.pow22523();

    // x = uv^3(uv^7)^((q-5)/8)
    x = v3.multiply(u).multiply(x);

    vxx = x.square().multiply(v);
    check = vxx.subtract(u);            // vx^2-u
    if (check.isNonZero()) {
        check = vxx.add(u);             // vx^2+u

        if (check.isNonZero())
            throw new IllegalArgumentException("not a valid GroupElement");
        x = x.multiply(curve.getI());
    }

    if ((x.isNegative() ? 1 : 0) != Utils.bit(s, curve.getField().getb()-1)) {
        x = x.negate();
    }

    this.curve = curve;
    this.repr = Representation.P3;
    this.X = x;
    this.Y = y;
    this.Z = curve.getField().ONE;
    this.T = this.X.multiply(this.Y);
}
 
开发者ID:NoYouShutup,项目名称:CryptMeme,代码行数:60,代码来源:GroupElement.java


注:本文中的net.i2p.crypto.eddsa.Utils.bit方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。