Python - Cifrado y Descifrado Rsa , Tarea para la escuela

 
Vista:
Imágen de perfil de Emanuel
Val: 8
Ha disminuido su posición en 9 puestos en Python (en relación al último mes)
Gráfica de Python

Cifrado y Descifrado Rsa , Tarea para la escuela

Publicado por Emanuel (5 intervenciones) el 07/03/2018 20:31:02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Mar  7 11:22:58 2018

@author: chemita
"""
 
import random
 
import math
 
def Rsa():
 
    Num_Pri = [1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,
            1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,
            1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,
            1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,
            1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,
            1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,
            2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,
            2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,
            2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,
            2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,
            2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,
            2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,
            2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,
            3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,
            3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,
            3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,
            3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,
            3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,
            3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,
            4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,
            4229]
 
    p = Num_Pri[random.randint(1,len(Num_Pri))]
 
    q = Num_Pri[random.randint(1,len(Num_Pri))]
 
    n = p * q
 
    phi = (p-1) * (q-1)
 
    e = 0
 
    d = 0
 
    for i in range(2,phi+1):
 
        if math.gcd(phi,i) == 1:
 
            e = i
 
            break
 
    for i in range(1,phi+1):
 
        if ((i * e)-1) % phi == 0:
 
            d = i
 
            break
 
    Mensaje = open(input("Ruta Del Archivo De Texto"))
 
    Mensaje2 = open("cifrado.txt","w")
 
    caracter = Mensaje.read()
 
    print (caracter)
 
    for M in caracter:
 
        M = ord(M)
 
        M = M ** e % n
 
        Mensaje2.write(str(M)+ ",")
 
    Mensaje.close()
 
    Mensaje2.close()
 
    print ("p = ", p)
 
    print ("q = ", q)
 
    print("n = ", n)
 
    print("phi = ", phi)
 
    print("E =", e)
 
    print("d =", d)
 
def Rsa2():
 
    M = open("cifrado.txt")
 
    M2= open("mensaje_descifrado.txt","w")
 
    caracter = M.read()
 
    lista = caracter.split(",")
 
    d = int(input("num d: "))
 
    n = int(input("num n: "))
 
    Mensaje = ""
 
    Contador = 0
 
    while Contador != len(lista) -1:
 
        MC = int(lista[Contador])
 
        MC = chr(MC ** d % n)
 
        M2.write(MC)
 
        Mensaje = Mensaje + MC
 
        Contador = Contador + 1
 
    M.close()
 
    M2.close()
 
    print(Mensaje)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder