Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.03 KB | None | 0 0
  1. using System;
  2. using Org.BouncyCastle.Math;
  3. using System.Linq;
  4.  
  5. namespace zadanie2kryptologia
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. Console.WriteLine("jk35940 Karol Jankowski");
  12. Console.WriteLine("Kryptologia zadanie nr.2");
  13. string sekretrand = randomznaki(rozmiar());
  14. Console.WriteLine("sekret: " + sekretrand);
  15. int[] senator = {6, 4, 10};
  16. int[] zgody = {3, 3, 6};
  17. BigInteger[] sekretyregion = new BigInteger[3];
  18. for (int i = 0; i < 3; i++)
  19. {
  20. string region = sekretrand.Substring(i*(sekretrand.Length/3), sekretrand.Length/3);
  21. sekretyregion[i] = new BigInteger(region);
  22. }
  23. for (int i = 0; i < 3; i++)
  24. {
  25. BigInteger sekret = sekretyregion[i];
  26. BigInteger pierwsza = sekret.NextProbablePrime();
  27. Console.WriteLine("sekret dla regionu " + i + ":");
  28. Console.WriteLine(sekret);
  29. Console.WriteLine("pierwsza: " + pierwsza);
  30. BigInteger[] elem = new BigInteger[zgody[i] - 1];
  31. BigInteger[] przydzielanie = new BigInteger[senator[i]];
  32. for (int j = 0; j < zgody[i] - 1; j++)
  33. {
  34. BigInteger losbigint;
  35. do
  36. {
  37. losbigint = new BigInteger(randomznaki(rozmiar()/3));
  38. }
  39. while (losbigint.CompareTo(sekret) > 0);
  40. elem[j] = losbigint;
  41. }
  42. Console.WriteLine("udziaΕ‚y: ");
  43. for (int x = 1; x <= senator[i]; x++)
  44. {
  45. BigInteger K = new BigInteger("0");
  46. for (int potega = 1; potega < zgody[i]; potega++)
  47. {
  48. BigInteger cienie = new BigInteger(x.ToString());
  49. BigInteger el = cienie.Pow(potega).Multiply(elem[potega - 1]);
  50. K = K.Add(el);
  51. }
  52. K = K.Add(sekret);
  53. przydzielanie[x - 1] = K.Mod(pierwsza);
  54. Console.WriteLine(x + ", " + przydzielanie[x - 1]);
  55. }
  56. BigInteger J = new BigInteger("0");
  57. Console.WriteLine("odtworzony sekret: ");
  58. for (int x = 1; x <= zgody[i]; x++)
  59. {
  60. BigInteger cienie = new BigInteger(x.ToString());
  61. BigInteger part = przydzielanie[x - 1];
  62. for (int x1 = x + 1; x1 <= zgody[i]; x1++)
  63. {
  64. BigInteger cienieg = new BigInteger(x1.ToString());
  65. BigInteger t1 = cienieg.Multiply(new BigInteger("-1")).Mod(pierwsza);
  66. BigInteger t = cienie.Subtract(cienieg).Mod(pierwsza);
  67. part = part.Multiply(t1.Multiply(t));
  68. }
  69. for (int x2 = x - 1; x2 >= 1; x2--)
  70. {
  71. BigInteger cienied = new BigInteger(x2.ToString());
  72. BigInteger t1 = cienied.Multiply(new BigInteger("-1").Mod(pierwsza));
  73. BigInteger t = cienie.Subtract(cienied).ModInverse(pierwsza);
  74. part = part.Multiply(t1.Multiply(t));
  75. }
  76. J = J.Add(part.Mod(pierwsza));
  77. }
  78. J = J.Mod(pierwsza);
  79. Console.WriteLine(J);
  80. }
  81. Console.ReadLine();
  82. return;
  83. }
  84. private static Random random = new Random();
  85. static int rozmiar()
  86. {
  87. return 30;
  88. }
  89. static string randomznaki(int Length)
  90. {
  91. const string chars = "0123456789";
  92. return new string(Enumerable.Repeat(chars, Length).Select(s => s[random.Next(s.Length)]).ToArray());
  93. }
  94. }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement