Thema: Delphi from C# to delphi

Einzelnen Beitrag anzeigen

sdean

Registriert seit: 5. Dez 2009
64 Beiträge
 
#4

AW: from C# to delphi

  Alt 22. Dez 2022, 21:47
So many thanks , and what about this please :
Code:
public static bool IsProbablePrime(this BigInteger n)
      {
         var n_minus_one = n - BigInteger.One;
         if (n_minus_one.Sign <= 0) return false;

         int s;
         var d = n_minus_one;
         for (s = 0; d.IsEven; s++) d >>= 1;

         var bitLen = n.GetBitLength();
         var randomBytes = new byte[bitLen / 8 + 1];
         var lastByteMask = (byte)((1 << (int)(bitLen % 8)) - 1);
         BigInteger a;
         if (MillerRabinIterations < 15)
            return false;
         for (int i = 0; i < MillerRabinIterations; i++)
         {
            do
            {
               Encryption.RNG.GetBytes(randomBytes);
               randomBytes[^1] &= lastByteMask;
               a = new BigInteger(randomBytes);
            }
            while (a < 3 || a >= n_minus_one);
            a--;

            var x = BigInteger.ModPow(a, d, n);
            if (x.IsOne || x == n_minus_one) continue;

            int r;
            for (r = s - 1; r > 0; r--)
            {
               x = BigInteger.ModPow(x, 2, n);
               if (x.IsOne) return false;
               if (x == n_minus_one) break;
            }
            if (r == 0) return false;
         }
         return true;
      }
Again thank you
  Mit Zitat antworten Zitat