Guest User

Untitled

a guest
Jan 14th, 2020
64
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11.  
  12. namespace LFSR
  13. {
  14. public partial class LFSR : Form
  15. {
  16. public LFSR()
  17. {
  18. InitializeComponent();
  19. }
  20. int k1, k2, k3; // lista przy lfsr - dlugosc
  21. int KK, K1, K2, K3; // watki wielkosc
  22. int xor1, xor2, xor3;
  23. int[] j1, j2, j3; // tab do losowych
  24. int[] h1, h2, h3;
  25. int ww1, ww2, ww3; // lista dla f(x) wyrazy wolne
  26. int liczba = 20000;
  27. int[] test;
  28. int[] tabw1, tabw2, tabw3; //tablice do trzymania wartosci wynikowych
  29. private void label7_Click(object sender, EventArgs e)
  30. {
  31.  
  32. }
  33. private void label6_Click(object sender, EventArgs e)
  34. {
  35.  
  36. }
  37. private void label8_Click(object sender, EventArgs e)
  38. {
  39.  
  40. }
  41. private void label10_Click(object sender, EventArgs e)
  42. {
  43.  
  44. }
  45. private void Form1_Load(object sender, EventArgs e)
  46. {
  47.  
  48. }
  49. void lista()
  50. {
  51. k1 = (int)numericUpDown1.Value;
  52. k2 = (int)numericUpDown2.Value;
  53. k3 = (int)numericUpDown3.Value;
  54. ww1 = (int)numericUpDown4.Value;
  55. ww2 = (int)numericUpDown5.Value;
  56. ww3 = (int)numericUpDown6.Value;
  57. }
  58. void losowe(int numer, string nazwa)
  59. {
  60. if (numer > 0)
  61. {
  62. if (numer == k1 && numer > 0 && nazwa == "k1")
  63. {
  64. K1 = (2 * numer) - 1;
  65. textBox1.Clear();
  66. var rand = new Random();
  67. j1 = new int[k1];
  68. int p0 = 0;
  69. for (int x = 0; x < k1; x++)
  70. {
  71. int b;
  72. b = rand.Next(0, 2);
  73. if (b == 1) p0++;
  74. j1[x] = b;
  75. }
  76. h1 = new int[p0];
  77. for (int i = 0; i < j1.Length; i++)
  78. {
  79. textBox1.Text = textBox1.Text + j1[i];
  80. }
  81. int poz = 0;
  82. for (int z = 0; z < j1.Length; z++)
  83. {
  84. if (j1[z] == 1)
  85. {
  86. h1[poz] = z;
  87. poz++;
  88. }
  89. }
  90. int zmshift = 0;
  91.  
  92. tabw1 = new int[K1];
  93. for (int p = 0; p < K1; p++)
  94. {
  95.  
  96. przesun();
  97. pokaz();
  98. xor();
  99. }
  100. void pokaz()
  101. {
  102. textBox4.Clear();
  103. for (int d = 0; d < tabw1.Length; d++)
  104. {
  105. textBox4.Text = textBox4.Text + tabw1[d].ToString();
  106. }
  107. }
  108. void przesun()
  109. {
  110. int[] d0 = new int[j1.Length];
  111. d0[0] = xor1;
  112. for (int c = 0; c < j1.Length; c++)
  113. {
  114. d0[(c + 1) % d0.Length] = j1[c];
  115. }
  116. tabw1[zmshift] = j1[j1.Length - 1];
  117. zmshift++;
  118. j1 = d0;
  119. }
  120. void xor()
  121. {
  122. xor1 = 0;
  123. int[] temp = new int[poz];
  124. for (int a = 0; a < poz; a++)
  125. {
  126. temp[a] = j1[h1[a]];
  127. }
  128. xor1 = ww1 ^ temp[0];
  129. for (int a = 1; a < (temp.Length); a++)
  130. {
  131. xor1 = xor1 ^ temp[a];
  132. }
  133. }
  134. }
  135. else if (numer == k2 && numer > 0 && nazwa == "k2")
  136. {
  137. K2 = (2 * numer) - 1;
  138. var rand = new Random();
  139. j2 = new int[k2];
  140. textBox2.Clear();
  141. int pp2 = 0;
  142. for (int x = 0; x < k2; x++)
  143. {
  144. int b;
  145. b = rand.Next(0, 2);
  146. j2[x] = b;
  147. if (b == 1) pp2++;
  148. }
  149. h2 = new int[pp2];
  150. for (int i = 0; i < j2.Length; i++)
  151. {
  152. textBox2.Text = textBox2.Text + j2[i];
  153. }
  154. int pos2 = 0;
  155. for (int z = 0; z < j2.Length; z++)
  156. {
  157. if (j2[z] == 1)
  158. {
  159. h2[pos2] = z;
  160. pos2++;
  161. }
  162. }
  163. int s2 = 0;
  164. int liczba0 = 0;
  165.  
  166. tabw2 = new int[K2];
  167. for (int p = 0; p < K2; p++)
  168. {
  169.  
  170. przesun();
  171. pokaz();
  172. xor();
  173. }
  174. void pokaz()
  175. {
  176. textBox5.Clear();
  177. for (int d = 0; d < tabw2.Length; d++)
  178. {
  179. textBox5.Text = textBox5.Text + tabw2[d].ToString();
  180. }
  181. }
  182. void przesun()
  183. {
  184. int[] demo2 = new int[j2.Length];
  185. demo2[0] = xor2;
  186. for (int c = 0; c < j2.Length; c++)
  187. {
  188. demo2[(c + 1) % demo2.Length] = j2[c];
  189. }
  190. tabw2[s2] = j2[j2.Length - 1];
  191. s2++;
  192. j2 = demo2;
  193. }
  194. void xor()
  195. {
  196. xor2 = 0;
  197. int[] temp2 = new int[pos2];
  198. for (int a = 0; a < pos2; a++)
  199. {
  200. temp2[a] = j2[h2[a]];
  201. }
  202. xor2 = ww2 ^ temp2[0];
  203. for (int a = 1; a < (temp2.Length); a++)
  204. {
  205. xor2 = xor2 ^ temp2[a];
  206. }
  207. }
  208. }
  209. else if (numer == k3 && numer > 0 && nazwa == "k3")
  210. {
  211. K3 = (2 * numer) - 1;
  212. var rand = new Random();
  213. j3 = new int[k3];
  214. textBox3.Clear();
  215. int pp3 = 0;
  216. for (int x = 0; x < k3; x++)
  217. {
  218. int b;
  219. b = rand.Next(0, 2);
  220. j3[x] = b;
  221. if (b == 1) pp3++;
  222. }
  223. h3 = new int[pp3];
  224. for (int i = 0; i < j3.Length; i++)
  225. {
  226. textBox3.Text = textBox3.Text + j3[i];
  227. }
  228. int pos3 = 0;
  229. for (int z = 0; z < j3.Length; z++)
  230. {
  231. if (j3[z] == 1)
  232. {
  233. h3[pos3] = z;
  234. pos3++;
  235. }
  236. }
  237. int s3 = 0;
  238. int liczba0 = 0;
  239. tabw3 = new int[K3];
  240. for (int p = 0; p < K3; p++)
  241. {
  242.  
  243. przesun();
  244. pokaz();
  245. xor();
  246. }
  247. void pokaz()
  248. {
  249. textBox6.Clear();
  250. for (int d = 0; d < tabw3.Length; d++)
  251. {
  252. textBox6.Text = textBox6.Text + tabw3[d].ToString();
  253. }
  254. }
  255. void przesun()
  256. {
  257. int[] demo3 = new int[j3.Length];
  258. demo3[0] = xor3;
  259. for (int c = 0; c < j3.Length; c++)
  260. {
  261. demo3[(c + 1) % demo3.Length] = j3[c];
  262. }
  263. tabw3[s3] = j3[j3.Length - 1];
  264. s3++;
  265. j3 = demo3;
  266. }
  267. void xor()
  268. {
  269. xor1 = 0;
  270. int[] temp3 = new int[pos3];
  271. for (int a = 0; a < pos3; a++)
  272. {
  273. temp3[a] = j3[h3[a]];
  274. }
  275. xor3 = ww3 ^ temp3[0];
  276. for (int a = 1; a < (temp3.Length); a++)
  277. {
  278. xor3 = xor3 ^ temp3[a];
  279. }
  280. }
  281. }
  282. }
  283. }
  284. void generowanie()
  285. {
  286. richTextBox1.Clear();
  287. test = new int[liczba];
  288. textBox1.Clear();
  289. var rand1 = new Random();
  290. int t1 = 0;
  291. int bit1 = 0;
  292. for (int x = 0; x < liczba; x++)
  293. {
  294. bit1 = rand1.Next(0, 2);
  295. if (bit1 == 1) t1++;
  296. test[x] = bit1;
  297. }
  298. foreach (var it in test)
  299. {
  300. richTextBox1.Text = richTextBox1.Text + it.ToString();
  301. }
  302. monobit0();
  303. podciagi1();
  304. }
  305. void geffegene() // GENERATOR GEFFE
  306. {
  307. richTextBox2.Clear();
  308. if (tabw1.Length > 0 && tabw2.Length > 0 && tabw3.Length > 0)
  309. {
  310. int x = tabw1.Length; int y = tabw2.Length; int z = tabw3.Length;
  311. int[] l1 = tabw1;
  312. int[] l2 = tabw2;
  313. int[] l3 = tabw3;
  314. int max = Math.Max(x, Math.Max(y, z));
  315. int[] geff = new int[max];
  316. int x1, x2, x3, xr; x1 = x2 = x3 = xr = 0;
  317. int p11, p12, p13; p11 = p12 = p13 = 0;
  318. int n1(int i1)
  319. {
  320. int n11 = i1;
  321. if (n11 == 0)
  322. {
  323. n11 = 1;
  324. }
  325. else if (n11 == 1)
  326. {
  327. n11 = 0;
  328. }
  329. return n11;
  330. }
  331. for (int t = 0; t < max; t++)
  332. {
  333. int t1 = 0;
  334. if (p11 < tabw1.Length)
  335. {
  336. x1 = tabw1[p11];
  337. p11++;
  338. }
  339. else
  340. {
  341. x1 = tabw1[0];
  342. p11 = 0;
  343. }
  344. if (p12 < tabw2.Length)
  345. {
  346. x2 = tabw2[p12];
  347. p12++;
  348. }
  349. else
  350. {
  351. x2 = tabw2[0];
  352. p12 = 0;
  353. }
  354. if (p13 < tabw3.Length)
  355. {
  356. x3 = tabw3[p13];
  357. p13++;
  358. }
  359. else
  360. {
  361. x3 = tabw3[0];
  362. p13 = 0;
  363. }
  364. t1 = n1(x2);
  365. xr = ((x1 | x2) ^ (t1 | x3));
  366. geff[t] = xr;
  367. }
  368. foreach (var inti in geff)
  369. {
  370. richTextBox2.Text = richTextBox2.Text + inti.ToString();
  371. }
  372. }
  373. }
  374. void startandgo()
  375. {
  376. richTextBox3.Clear();
  377. int[] stopG = new int[tabw1.Length];
  378. int l2 = 0; int l3 = 0; int xp = 0; int xr = 0; int wt1 = 0; int wt2 = 0;
  379. for (int u = 0; u < tabw1.Length; u++)
  380. {
  381. xp = tabw1[u];
  382. if (xp == 1)
  383. {
  384. l2++;
  385. if (l2 < tabw2.Length)
  386. {
  387. wt1 = tabw2[l2];
  388. }
  389. else
  390. {
  391. l2 = 0;
  392. wt1 = tabw2[0];
  393. }
  394. if (l3 < tabw3.Length)
  395. {
  396. wt2 = tabw3[l3];
  397. }
  398. else
  399. {
  400. l3 = 0;
  401. wt2 = tabw3[l3];
  402. }
  403. xr = wt1 ^ wt2;
  404. stopG[u] = xr;
  405. }
  406. else if (xp == 0)
  407. {
  408. l3++;
  409. if (l2 < tabw2.Length)
  410. {
  411. wt1 = tabw2[l2];
  412. }
  413. else
  414. {
  415. l2 = 0;
  416. wt1 = tabw2[0];
  417. }
  418. if (l3 < tabw3.Length)
  419. {
  420. wt2 = tabw3[l3];
  421. }
  422. else
  423. {
  424. l3 = 0;
  425. wt2 = tabw3[l3];
  426. }
  427. xr = wt1 ^ wt2;
  428. stopG[u] = xr;
  429. }
  430. }
  431. foreach (var item in stopG)
  432. {
  433. richTextBox3.Text = richTextBox3.Text + item.ToString();
  434. }
  435. }
  436. void shrinkinggene() // SHRINKING
  437. {
  438. richTextBox4.Clear();
  439. if (tabw1.Length > 0 && tabw2.Length > 0)
  440. {
  441. int x = tabw1.Length; int y = tabw2.Length;
  442. int[] l1 = tabw1;
  443. int[] l2 = tabw2;
  444. int[] shrink = new int[tabw1.Length];
  445. string shriS = "";
  446. int p11, p12; p11 = p12 = 0;
  447. int x1, x2, xr; x1 = x2 = xr = 0;
  448. for (int s = 0; s < x; s++)
  449. {
  450. x1 = tabw1[s];
  451. if (p11 < tabw2.Length)
  452. {
  453. x2 = tabw2[p11];
  454. p11++;
  455. }
  456. else
  457. {
  458. x2 = tabw2[0];
  459. p11 = 0;
  460. }
  461. if (x1 == 1)
  462. {
  463. shriS = shriS + x2.ToString();
  464. }
  465. }
  466. richTextBox4.Text = shriS;
  467. }
  468. }
  469. void monobit0()
  470. {
  471. int licznik = 0;
  472. foreach (var items in test)
  473. {
  474. if (items == 1)
  475. {
  476. licznik++;
  477. }
  478. }
  479. if ((licznik > 9725) && (licznik < 10275))
  480. {
  481. monobit.Text = "TEST ZALICZONY <-monobit->";
  482. monobit.BackColor = Color.Green;
  483. }
  484. else
  485. {
  486. monobit.Text = "TEST NIEZALICZONY <-monobit->";
  487. monobit.BackColor = Color.Red;
  488. }
  489. }
  490. void podciagi1()
  491. {
  492. int[] podc = new int[769]; int podc1 = 0;
  493. int liczzera = 0; int liczjedynki = 0;
  494. int tymcz = 0;
  495. int[] tymcz0 = new int[26];int[] last = new int[6];
  496. for(int e=1;e<test.Length+1;e++)
  497. {
  498. if(test.Length-e>27)
  499. {
  500. if (!(e % 26 == 0))
  501. {
  502. tymcz0[tymcz] = test[e - 1];
  503. tymcz++;
  504. }
  505. else if (e % 26 == 0 && e != 0)
  506. {
  507. for (int g = 0; g < 26; g++)
  508. {
  509. if (tymcz0[g] == 1) liczjedynki++;
  510. else liczzera++;
  511. tymcz = 0;
  512. }
  513. if (liczzera == 26 || liczjedynki == 26)
  514. {
  515. if(podc1!=769)
  516. {
  517. podc[podc1] = 1; podc1++;
  518. }
  519. }
  520. else
  521. {
  522. if(podc1!=769)
  523. {
  524. podc[podc1] = 0; podc1++;
  525. }
  526. }
  527. }
  528. }
  529. }
  530. if(podc.Contains(1))
  531. {
  532. podciagi.Text = "TEST NIE ZALICZONY <-podciagi->";
  533. podciagi.BackColor = Color.Red;
  534. }
  535. else
  536. {
  537. podciagi.Text = "TEST ZALICZONY <-podciagi->";
  538. podciagi.BackColor = Color.Green;
  539. }
  540. }
  541. private void button7_Click(object sender, EventArgs e)
  542. {
  543. generowanie();
  544. }
  545. private void stopandgo_Click(object sender, EventArgs e)
  546. {
  547. startandgo();
  548. }
  549. private void shrinking_Click(object sender, EventArgs e)
  550. {
  551. shrinkinggene();
  552. }
  553. private void geffe_Click(object sender, EventArgs e)
  554. {
  555. geffegene();
  556. }
  557. private void button1_Click(object sender, EventArgs e)
  558. {
  559. lista();
  560. losowe(k1,"k1");
  561. }
  562. private void button4_Click(object sender, EventArgs e)
  563. {
  564. lista();
  565. losowe(k2,"k2");
  566. }
  567. private void button6_Click(object sender, EventArgs e)
  568. {
  569. lista();
  570. losowe(k3,"k3");
  571. }
  572. }
  573. }
RAW Paste Data