public static EllipticCurvePoint AffineCoords(EllipticCurvePoint p) { p.X = BigInteger.Remainder(p.X * Additional.Inverse(p.Z, p.P), p.P); p.Y = BigInteger.Remainder(p.Y * Additional.Inverse(p.Z, p.P), p.P); p.Z = 1; return(p); } // Приведение к афинным координатам
public void Func3() { for (int i = 3; i < lengtshifr; i += 4) { Shifr _sh = Sh[i]; EllipticCurvePoint para2 = _sh.PointB; EllipticCurvePoint t = EllipticCurvePoint.AddPoint(para2, KeyPara1); BigInteger q = t.X * Additional.Inverse(t.Z, t.P); q = BigInteger.Remainder(q, t.P); if (_sh.Correct != 0) { q += _sh.Correct; } Message[i] = q.ToByteArray(); } }