Guest User

Untitled

a guest
May 21st, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4.  
  5. int verPrimo=0;
  6. long int primo1, primo2;
  7.  
  8. long int euclides(long int e, long int mult)
  9. {
  10. long int aux;
  11.  
  12. if(e%mult==0)
  13. {
  14. return mult;
  15. }
  16. else
  17. {
  18. aux = mult;
  19. mult = e%mult;
  20. e = aux;
  21. }
  22. euclides(e,mult);
  23. }
  24.  
  25. long int verificarPrimo(long int primo)
  26. {
  27. int i, j, cont=0;
  28.  
  29. verPrimo = 0;
  30.  
  31. for(i=1; i<sqrt(primo); i++)
  32. {
  33. if(primo % i == 0)
  34. {
  35. cont++;
  36. }
  37.  
  38. }
  39.  
  40. if(cont==1)
  41. {
  42. return verPrimo = 1;
  43. }
  44. else
  45. {
  46. return verPrimo = 0;
  47. }
  48.  
  49. }
  50.  
  51. long int gerarChavePublica()
  52. {
  53. long int pri1, pri2, mult = 0, e, euclidizinho=0;
  54.  
  55. printf("\nDigite um par de numeros primos P e Q: \n");
  56. scanf("%ld %ld", &primo1, &primo2);
  57.  
  58. pri1 = verificarPrimo(primo1);
  59. pri2 = verificarPrimo(primo2);
  60.  
  61. if(pri1==0 || pri2==0)
  62. {
  63. while(pri1==0)
  64. {
  65. printf("O numero P nao eh primo, por favor, digite outro valor: \n");
  66. scanf("%ld", &primo1);
  67.  
  68. pri1 = verificarPrimo(primo1);
  69.  
  70. }
  71. while(pri2==0)
  72. {
  73. printf("O numero Q nao eh primo, por favor, digite outro valor: \n");
  74. scanf("%ld", &primo2);
  75.  
  76. pri2 = verificarPrimo(primo2);
  77. }
  78.  
  79. }
  80.  
  81. printf("Numeros P e Q sao primos!\n");
  82.  
  83. printf("P = %ld Q = %ld\n", primo1, primo2);
  84.  
  85. mult = (primo1-1)*(primo2-1);
  86.  
  87. printf("Digite um numero E relativamente primo a (p-1)(q-1) = %ld\n", mult);
  88. scanf("%ld", &e);
  89.  
  90. euclidizinho = euclides(e, mult);
  91.  
  92. while(euclidizinho!=1)
  93. {
  94. printf("Digite um outro valor valido para E: \n");
  95. scanf("%ld", &e);
  96. euclidizinho = euclides(e, mult);
  97. }
  98.  
  99.  
  100. }
  101.  
  102. int main()
  103. {
  104. int opcao;
  105.  
  106. printf("Digite uma das 3 opcoes: \n\n");
  107.  
  108. printf("1 - Gerar chave publica\n");
  109. printf("2 - Criptografar\n");
  110. printf("3 - Descriptografar\n\n");
  111.  
  112. scanf("%d", &opcao);
  113.  
  114. if(opcao == 1)
  115. {
  116. gerarChavePublica();
  117. }
  118.  
  119.  
  120. }
Add Comment
Please, Sign In to add comment