BigIntegerHelper.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Numerics;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace Helper
  8. {
  9. public static class BigIntegerHelper
  10. {
  11. public static BigInteger RandBigInteger(int byteNum)
  12. {
  13. var bigIntegerBytes = new byte[byteNum];
  14. var random = new Random();
  15. random.NextBytes(bigIntegerBytes);
  16. var bigInteger = new BigInteger(bigIntegerBytes);
  17. return bigInteger;
  18. }
  19. public static BigInteger RandUnsignedBigInteger(int byteNum)
  20. {
  21. var bigIntegerBytes = new byte[byteNum];
  22. var random = new Random();
  23. random.NextBytes(bigIntegerBytes);
  24. var newBigIntegerBytes = new byte[byteNum + 1];
  25. // 给最高位加个0,防止变成负数
  26. Array.Copy(bigIntegerBytes, newBigIntegerBytes, bigIntegerBytes.Length);
  27. newBigIntegerBytes[newBigIntegerBytes.Length - 1] = 0;
  28. var bigInteger = new BigInteger(newBigIntegerBytes);
  29. return bigInteger;
  30. }
  31. public static byte[] ToTrimByteArray(this BigInteger bigInteger)
  32. {
  33. var bytes = bigInteger.ToByteArray();
  34. if (bytes[bytes.Length - 1] == 0)
  35. {
  36. return bytes.Take(bytes.Length - 1).ToArray();
  37. }
  38. return bytes;
  39. }
  40. }
  41. }