private BigInteger getPublicKey(BigInteger phi, int length) { BigInteger publicKey = new BigInteger("0"); Random r = new Random(); var g = _zero.Clone(); var _ = _zero.Clone(); while (g.CompareTo(_one) != 0) { publicKey = getPrimeNumber(length); g = extendedGCD(phi, publicKey, ref _, ref _); } return(publicKey); }
public BigInteger Mul(BigInteger secondNumber) { bool sign = false; if ((secondNumber.value[0] < 0 && value[0] >= 0) || (secondNumber.value[0] >= 0 && value[0] < 0)) { sign = true; } var posValue = Clone(); var secPosValue = secondNumber.Clone(); if (posValue.value[0] < 0) { posValue.value[0] *= -1; } if (secPosValue.value[0] < 0) { secPosValue.value[0] *= -1; } BigInteger res = new BigInteger(mulKaratsuba(posValue.value, secPosValue.value)); if (sign) { res.value[0] *= -1; } return(res); }
public BigInteger Div(BigInteger secondNumber) { bool sign = false; if ((secondNumber.value[0] < 0 && value[0] >= 0) || (secondNumber.value[0] >= 0 && value[0] < 0)) { sign = true; } var posValue = Clone(); var secPosValue = secondNumber.Clone(); if (posValue.value[0] < 0) { posValue.value[0] *= -1; } if (secPosValue.value[0] < 0) { secPosValue.value[0] *= -1; } var res = new BigInteger(quadraticDiv(posValue.value, secPosValue.value).quotient); if (sign) { res.value[0] *= -1; } return(res); }
public BigInteger Sub(BigInteger secondNumber) { if (value[0] < 0 && secondNumber.value[0] < 0) { var posValue = Clone(); posValue.value[0] *= -1;; var secPosValue = secondNumber.Clone(); secPosValue.value[0] *= -1;; var res = new BigInteger(addHelper(posValue.value, secPosValue.value)); res.value[0] *= -1;; return(res); } if (value[0] < 0) { var posValue = Clone(); posValue.value[0] *= -1; var res = new BigInteger(addHelper(clone(secondNumber.value), posValue.value)); res.value[0] *= -1; return(res); } if (secondNumber.value[0] < 0) { var posValue = secondNumber.Clone(); posValue.value[0] *= -1; return(new BigInteger(addHelper(clone(value), posValue.value))); } return(new BigInteger(subHelper(clone(value), clone(secondNumber.value)))); }