Python - Encriptar de forma simple

 
Vista:
Imágen de perfil de Unknow

Encriptar de forma simple

Publicado por Unknow (1 intervención) el 27/02/2023 06:26:19
Quiero hacer un programita que pueda encriptar de alguna forma simple una cadena de texto

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
caracteres_encriptados = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
encriptada = ""
#Crear usuario y clave
print(".:Bienvenido:.\nPara empezar, debe crear un usuario")
user=input("Ingrese un nombre de usuario: ")
while True:
    #Hacer que la contraseña cumpla con los requisitos
    pswr = input("Ingrese una contraseña\nCaracteres permitidos: (Aa-Zz, 0-9, /,*,-,+): ")
    longitud_clave = len(pswr) #verificar la longitud de la clave
    if longitud_clave >= 8 and longitud_clave <=10:
        print("COntraseña aceptada")
        break
    else:
        print("La contraseña debe tener una longitud entre 8 y 10 caracteres.")
#Niveles de encriptacion
encriptacionbaja = 0
encriptacionmedia = 1
encriptacionalta = 2
#pedir un nivel de encriptacion
nivelencriptacion = input("Selecciona el nivel de encriptación: 0 (Bajo), 1 (Medio), 2 (Fuertes): ")
#comprobar que el nivel es valido
if nivelencriptacion == 0 or nivelencriptacion == 1 or nivelencriptacion == 2:
    #Encriptacion
    if nivelencriptacion == encriptacionbaja:
        for c in pswr:
            if c in caracteres_encriptados:
                encriptada += c + "2"
                print( encriptada)
            else:
                encriptada += c
else:
    print("El nivel de encriptación debe ser 0 (Bajo), 1 (Medio) o 2 (Alto).")

Al final no tengo ningun resultado
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

Encriptar de forma simple

Publicado por masklet63 (1 intervención) el 27/02/2023 13:05:32
Cambia la linea 20 por esta:
nivelencriptacion = int(input("Selecciona el nivel de encriptación: 0 (Bajo), 1 (Medio), 2 (Fuertes): "))

Asi si funciona.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Encriptar de forma simple

Publicado por Rolando José (66 intervenciones) el 25/05/2025 04:59:52
Esto es un fraude o que??

ese codigo lo copio de alguna parte, no sabe ni lo que hace.

Para que pide un usuario si nunca lo usa??

para que se necesita usuario?? es mas importante que pida el texto a ser encriptado.

La encriptacion mas sencilla que existe es remplazar letras en un mensaje, por ejemplo tomar las letras de una palabra como murcielago o aurelio, que tuviera todas las vocales y a cada letra asignarle un numero de 0 a 9

a=0 u=1 r=2 e=3 l=4 i=5 o=6

asi una frase tan comun como "Lorem ipsum...":
1
2
3
4
5
6
7
8
9
10
11
12
13
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation
ullamco laboris nisi ut aliquip
ex ea commodo consequat.
Duis aute irure dolor in
reprehenderit in voluptate
velit esse cillum dolore
eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
queda encriptada en:
1
2
3
4
5
6
7
8
9
10
11
12
13
L623m 5ps1m d6462 s5t 0m3t,
c6ns3ct3t12 0d5p5sc5ng 345t,
s3d d6 351sm6d t3mp62 5nc5d5d1nt 1t
40b623 3t d64623 m0gn0 045q10.
Ut 3n5m 0d m5n5m v3n50m,
q15s n6st21d 3x32c5t0t56n
1440mc6 40b625s n5s5 1t 045q15p
3x 30 c6mm6d6 c6ns3q10t.
D15s 01t3 52123 d6462 5n
23p23h3nd325t 5n v641pt0t3
v345t 3ss3 c5441m d64623
31 f1g50t n1440 p0250t12.
Exc3pt312 s5nt 6cc03c0t c1p5d0t0t n6n p265d3nt, s1nt 5n c14p0 q15 6ff5c50 d3s321nt m6445t 0n5m 5d 3st 40b621m.

a primera vista se encriptaron muchas palabras que dificultan su comprension inmediata

De esa forma basica se deriva el metodo cesar, en el cual, del abecedario normal, se dezplaza cierto numero de letras el mensaje y se escriben las letras dezplazadas.
dezplazando el abeedario tan solo 5 letras, el mensaje queda irreconocible:
1
2
3
4
5
6
7
8
9
10
11
12
13
Ptwjq nuxzq itptw xny fqjy,
htrxjhyjyzw finunxhnrl jpny,
xji it jnzxqti yjqutw nrhninizry zy
pfgtwj jy itptwj qflrf fpnvzf.
Zy jrnq fi qnrnq Ajrnfq,
vznx rtxywzi jCjwhnyfyntr
zppfqht pfgtwnx rnxn zy fpnvznu
jC jf htqqtit htrxjvzfy.
Iznx fzyj nwzwj itptw nr
wjuwjmjrijwny nr Atpzuyfyj
Ajpny jxxj hnppzq itptwj
jz kzlnfy rzppf ufwnfyzw.
JChjuyjzw xnry thhfjhfy hzunifyfy rtr uwtnijry, xzry nr hzpuf vzn tkknhnf ijxjwzry qtppny frnq ni jxy pfgtwzq.

La maquina enigma que usaban los alemanes hacian 7 dezplazamientos sucesivos que se controlaban con las perillas numeradas que tenia la maquina, tanto para cifrar como para descifrar,
en este video se puede ver como funcionaba la maquina enigma y como es el cifrado cesar.
https://youtu.be/ybkkiGtJmkM?t=67

A continuacion comparto el codigo de la app demo de cifrado y descifrado cesar El boton "C=>" CIFRA y el "<=C" DESCIFA, siempre que la clave sea la misma un valor de 0 a 27
El codigo para TCL es:
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
132
133
134
135
136
137
proc ahora {{f "%T"}} {return [clock format [clock seconds] -format $f -timezone -0500]}
proc tmsg {{txt ""} {ty "ok"} {img "info"}} {return [tk_messageBox -message $txt -type $ty -icon $img ]}
proc prin {{txt ""} {p "\n#"}} {[eval focus] insert end $p$txt}
catch {destroy .e}
toplevel .e -bg #AAA
set ws [winfo screenwidth .]
set hs [winfo screenheight .]
wm geometry .e "1250x1000+0+0"
wm withdraw .
 
 
set demo0 {
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation
ullamco laboris nisi ut aliquip
ex ea commodo consequat.
Duis aute irure dolor in
reprehenderit in voluptate
velit esse cillum dolore
eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
}
set demo1 {Padre Nuestro
Que estás en el cielo
Santificado sea tu nombre
Ven a nosotros tu reino
hagase tu voluntad
En la tierra como en el cielo
Danos hoy nuestro pan de cada dia
Perdona nuestras ofensas
como también nosotros perdonámos
a los que nos ofenden
no nos dejes caer en la tentación
y libranos del mal
AMEN}
 
set demo2 {
Muchos años después, frente al pelotón de fusilamiento,
el coronel Aureliano Buendía había de recordar aquella
tarde remota en que su padre lo llevó a conocer el hielo.
Macondo era entonces una aldea de veinte casas de barro y
cañabrava construidas a la orilla de un río de aguas diáfanas
}
 
place [label .e.l0 -text "Estado" -bg #FF0 -fg #F00 -font "arial 20"] -x 0 -y 0
place [labelframe .e.fo -text "original"] -x 0 -y 50 -width 500 -height 800
place [labelframe .e.fe -text "encripta"] -x 550 -y 50 -width 500 -height 800
place [text .e.fo.t -undo 1 -tabs 50 -font "arial 20"] -x 10 -y 10 -width 450
place [text .e.fe.t -undo 1 -tabs 50 -font "arial 20"] -x 10 -y 10 -width 450
place [label .e.lsy -text "symbolos"] -x 10 -y 950
place [entry .e.esy -textvar sym -width 90] -x 100 -y 950
place [label .e.le -text "symbolos"] -x 10 -y 900
place [entry .e.el -textvar letras -width 90] -x 120 -y 900
place [label .e.pa -text "password"] -x 10 -y 850
place [entry .e.ec -textvar "clave" -width 30] -x 120 -y 850
place [button .e.b0 -text "=>" -command {
set letras ""
set n 0
if {$clave==""} {set clave aurelio}
if {$clave==""} {tmsg "debe escribir el password para encriptar, entre mas largo mas dificil sera de desencriptar"}
foreach {l} [split $clave {}] {
	if {[string length $clave]<=9} {
		append letras "\{$l\}\ \{$n\}\ "
		incr n
	}
	if {[string length $clave]>9} {
		set t [format %c [expr $n+97]]
		append letras "\{$l\}\ \{$t\}\ "
		incr n
	}
}
.e.fe.t delete 0.0 end
.e.fe.t insert end [string map $letras [.e.fo.t get 0.0 end]]
 
}] -x 500 -y 200 -width 50
place [button .e.b1 -text "<=" -command {
set letras ""
set n 0
if {$clave==""} {set clave aurelio}
if {$clave==""} {tmsg "debe escribir el password para encriptar, mas largo mas dificil sera de desencriptar"}
foreach {l} [split $clave {}] {
	if {[string length $clave]<=9} {
		append letras "\{$n\}\ \{$l\}\ "
		incr n
	}
	if {[string length $clave]>9} {
		set t [format %c [expr $n+97]]
		append letras "\{$t\}\ \{$l\}\ "
		incr n
	}
}
.e.fo.t delete 0.0 end
.e.fo.t insert end [string map $letras [.e.fe.t get 0.0 end]]
}] -x 500 -y 600 -width 50
place [button .e.bc -text "C=>" -command {
set sym "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
set letras ""
while {$clave==""||$clave<1||$clave>27} {set clave [expr int(rand()*27)]}
set n 0
if {$clave<0 || $clave>27||$clave==""} {tmsg "el passoword debe ser un numero entre 0 y 27, de lo contrario se tomara uno randomico que debera memorizar para desencriptar el mensaje encriptado"}
foreach {l} [split $sym {}] {
append letras "\{$l\}\ \{[lindex [split $sym {}] [expr $n+$clave]]\}\ "
incr n
}
.e.fe.t delete 0.0 end
.e.fe.t insert end [string map $letras [.e.fo.t get 0.0 end]]
}] -x 500 -y 250
place [button .e.bcd -text "<=C" -command {
set sym "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
set n 0
set letras ""
foreach {l} [split $sym {}] {
append letras "\{[lindex [split $sym {}] [expr $n+$clave] ]\}\ \{$l\}\ "
incr n
}
 
.e.fo.t delete 0.0 end
.e.fo.t insert end [string map $letras [.e.fe.t get 0.0 end]]
}] -x 500 -y 650
 
focus .e.fo.t
place [button .e.bfo -text "Borra Origen" -command {.e.fo.t delete 0.0 end}] -x 1100 -y 55
place [button .e.bfe -text "Borra Encripta" -command {.e.fe.t delete 0.0 end}] -x 1100 -y 110
place [button .e.bfofe -text "Swap textos" -command {
set to [.e.fo.t get 0.0 end];set te [.e.fe.t get 0.0 end]
.e.fo.t delete 0.0 end;.e.fe.t delete 0.0 end
.e.fo.t insert end $te;.e.fe.t insert end $to}] -x 1100 -y 165
place [button .e.bd0 -text "Demo1" -command {.e.fo.t delete 0.0 end
.e.fo.t insert end $demo0}] -x 1100 -y 220
place [button .e.bd1 -text "Demo2" -command {.e.fo.t delete 0.0 end
.e.fo.t insert end $demo1}] -x 1100 -y 275
place [button .e.bd2 -text "Demo3" -command {.e.fo.t delete 0.0 end
.e.fo.t insert end $demo2}] -x 1100 -y 330

El codigo para correr en python con tkinter es:
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
132
133
134
135
136
137
138
139
140
141
142
143
import tkinter as tk
w=tk.Tk()
code = '''
proc ahora {{f "%T"}} {return [clock format [clock seconds] -format $f -timezone -0500]}
proc tmsg {{txt ""} {ty "ok"} {img "info"}} {return [tk_messageBox -message $txt -type $ty -icon $img ]}
proc prin {{txt ""} {p "\n#"}} {[eval focus] insert end $p$txt}
catch {destroy .e}
toplevel .e -bg #AAA
set ws [winfo screenwidth .]
set hs [winfo screenheight .]
wm geometry .e "1250x1000+0+0"
wm withdraw .
set demo0 {
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation
ullamco laboris nisi ut aliquip
ex ea commodo consequat.
Duis aute irure dolor in
reprehenderit in voluptate
velit esse cillum dolore
eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
}
set demo1 {Padre Nuestro
Que estás en el cielo
Santificado sea tu nombre
Ven a nosotros tu reino
hagase tu voluntad
En la tierra como en el cielo
Danos hoy nuestro pan de cada dia
Perdona nuestras ofensas
como también nosotros perdonámos
a los que nos ofenden
no nos dejes caer en la tentación
y libranos del mal
AMEN}
set demo2 {
Muchos años después, frente al pelotón de fusilamiento,
el coronel Aureliano Buendía había de recordar aquella
tarde remota en que su padre lo llevó a conocer el hielo.
Macondo era entonces una aldea de veinte casas de barro y
cañabrava construidas a la orilla de un río de aguas diáfanas
}
place [label .e.l0 -text "Estado" -bg #FF0 -fg #F00 -font "arial 20"] -x 0 -y 0
place [labelframe .e.fo -text "original"] -x 0 -y 50 -width 500 -height 800
place [labelframe .e.fe -text "encripta"] -x 550 -y 50 -width 500 -height 800
place [text .e.fo.t -undo 1 -tabs 50 -font "arial 20"] -x 10 -y 10 -width 450
place [text .e.fe.t -undo 1 -tabs 50 -font "arial 20"] -x 10 -y 10 -width 450
place [label .e.lsy -text "symbolos"] -x 10 -y 950
place [entry .e.esy -textvar sym -width 90] -x 100 -y 950
place [label .e.le -text "symbolos"] -x 10 -y 900
place [entry .e.el -textvar letras -width 90] -x 120 -y 900
place [label .e.pa -text "password"] -x 10 -y 850
place [entry .e.ec -textvar "clave" -width 30] -x 120 -y 850
place [button .e.b0 -text "=>" -command {
set letras ""
set n 0
if {$clave==""} {set clave aurelio}
if {$clave==""} {tmsg "debe escribir el password para encriptar, entre mas largo mas dificil sera de desencriptar"}
foreach {l} [split $clave {}] {
	if {[string length $clave]<=9} {
		append letras "\{$l\}\ \{$n\}\ "
		incr n
	}
	if {[string length $clave]>9} {
		set t [format %c [expr $n+97]]
		append letras "\{$l\}\ \{$t\}\ "
		incr n
	}
}
.e.fe.t delete 0.0 end
.e.fe.t insert end [string map $letras [.e.fo.t get 0.0 end]]
}] -x 500 -y 200 -width 50
place [button .e.b1 -text "<=" -command {
set letras ""
set n 0
if {$clave==""} {set clave aurelio}
if {$clave==""} {tmsg "debe escribir el password para encriptar, mas largo mas dificil sera de desencriptar"}
foreach {l} [split $clave {}] {
	if {[string length $clave]<=9} {
		append letras "\{$n\}\ \{$l\}\ "
		incr n
	}
	if {[string length $clave]>9} {
		set t [format %c [expr $n+97]]
		append letras "\{$t\}\ \{$l\}\ "
		incr n
	}
}
.e.fo.t delete 0.0 end
.e.fo.t insert end [string map $letras [.e.fe.t get 0.0 end]]
}] -x 500 -y 600 -width 50
place [button .e.bc -text "C=>" -command {
set sym "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
set letras ""
while {$clave==""||$clave<1||$clave>27} {set clave [expr int(rand()*27)]}
set n 0
if {$clave<0 || $clave>27||$clave==""} {tmsg "el passoword debe ser un numero entre 0 y 27, de lo contrario se tomara uno randomico que debera memorizar para desencriptar el mensaje encriptado"}
foreach {l} [split $sym {}] {
append letras "\{$l\}\ \{[lindex [split $sym {}] [expr $n+$clave]]\}\ "
incr n
}
.e.fe.t delete 0.0 end
.e.fe.t insert end [string map $letras [.e.fo.t get 0.0 end]]
}] -x 500 -y 250
place [button .e.bcd -text "<=C" -command {
set sym "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
set n 0
set letras ""
foreach {l} [split $sym {}] {
append letras "\{[lindex [split $sym {}] [expr $n+$clave] ]\}\ \{$l\}\ "
incr n
}
.e.fo.t delete 0.0 end
.e.fo.t insert end [string map $letras [.e.fe.t get 0.0 end]]
}] -x 500 -y 650
focus .e.fo.t
place [button .e.bfo -text "Borra Origen" -command {.e.fo.t delete 0.0 end}] -x 1100 -y 55
place [button .e.bfe -text "Borra Encripta" -command {.e.fe.t delete 0.0 end}] -x 1100 -y 110
place [button .e.bfofe -text "Swap textos" -command {
set to [.e.fo.t get 0.0 end];set te [.e.fe.t get 0.0 end]
.e.fo.t delete 0.0 end;.e.fe.t delete 0.0 end
.e.fo.t insert end $te;.e.fe.t insert end $to}] -x 1100 -y 165
place [button .e.bd0 -text "Demo1" -command {.e.fo.t delete 0.0 end
.e.fo.t insert end $demo0}] -x 1100 -y 220
place [button .e.bd1 -text "Demo2" -command {.e.fo.t delete 0.0 end
.e.fo.t insert end $demo1}] -x 1100 -y 275
place [button .e.bd2 -text "Demo3" -command {.e.fo.t delete 0.0 end
.e.fo.t insert end $demo2}] -x 1100 -y 330
'''
w.eval(code)
w.mainloop()

De igua forma se puede incrustar el codigo de tcltk dentro de otros lenguajes que usen la misma libreria tk, como perl , ruby o lua.

cifra_descifra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar