Ya puse una entrada con un script en python para cifrar y descifrar utilizando el cifrado Atbash, y en ésta pongo el código Visual Basic para aplicaciones (VBA) para automatizar en Excel esa misma tarea.
El cifrado Atbash es un criptosistema de sustitución simple monoalfabética de alfabeto invertido, es decir, cada carácter del texto en claro se sustituye siempre por el mismo carácter en el texto cifrado, el situado en la misma posición que el carácter del texto en claro en el alfabeto con el orden de los caracteres invertido.
El código es el siguiente:
' CIFRADO ATBASH: ' ' Cifra y descifra textos en claro y criptogramas, respectivamente, ' utilizando el cifrado Atbash. ' ' http://mikelgarcialarragan.blogspot.com/ Option Explicit Public TEXTO_CLARO As Range Public CRIPTOGRAMA As Range Public Sub Cifrar() Dim Caracter As Integer Range("TEXTO_CLARO").Value = A_Z(UCase(Replace(Range("TEXTO_CLARO").Value, " ", ""))) If Len(Range("TEXTO_CLARO").Value) = 0 Then MsgBox "Introduzca el texto en claro a cifrar. Sólo caracteres alfabéticos [A-Z], 'Ñ' excluida.", vbOKOnly + vbCritical, "¡Error!" Else Range("CRIPTOGRAMA").Value = "" For Caracter = 1 To Len(Range("TEXTO_CLARO").Value) Range("CRIPTOGRAMA").Value = Range("CRIPTOGRAMA").Value & Chr(25 - (Asc(Mid(Range("TEXTO_CLARO").Value, Caracter, 1)) - 65) + 65) Next End If End Sub Public Sub Descifrar() Dim Caracter As Integer Range("CRIPTOGRAMA").Value = A_Z(UCase(Replace(Range("CRIPTOGRAMA").Value, " ", ""))) If Len(Range("CRIPTOGRAMA").Value) = 0 Then MsgBox "Introduzca el criptograma a descifrar. Sólo caracteres alfabéticos [A-Z], 'Ñ' excluida.", vbOKOnly + vbCritical, "¡Error!" Else Range("TEXTO_CLARO").Value = "" For Caracter = 1 To Len(Range("CRIPTOGRAMA").Value) Range("TEXTO_CLARO").Value = Range("TEXTO_CLARO").Value & Chr(25 - (Asc(Mid(Range("CRIPTOGRAMA").Value, Caracter, 1)) - 65) + 65) Next End If End Sub Function A_Z(Cadena As String) As String Dim Caracter As Integer For Caracter = 1 To Len(Cadena) Select Case Asc(Mid(Cadena, Caracter, 1)) Case 65 To 90: A_Z = A_Z & Mid(Cadena, Caracter, 1) End Select Next End Function
Ejemplo de funcionamiento:
- Cifrar:
- Descifrar:
Quizás también te interese:
Comentarios
Publicar un comentario