Hola!
Realmente, muy efectivo no es, pero siempre es entretenido escribir cosillas de estas. Lo que te propone
David (se llama "cifrado del César" o "César" a secas), es el más sencillo de todos. Tanto ése como éste que te propongo (llamado "de sustitución") son muy fáciles de romper, y de hecho es lo primero que se enseña en criptografía (a romperlos), pero pueden servir para que, por ejemplo, los datos no se vean a simple vista.
Esta función es reversible, para decodificar una cadena, cambia el contenido de los parámetros CodigoOriginal y CodigoCifrado. Si pruebas la función con los que te he dejado, verás que te devuelve exactamente el ejemplo que has puesto
Código:
Public Function Cifrado(ByVal Entrada As String, _
Optional CodigoOriginal As String = " abcdefghijklmnñopqrstuvwxyz", _
Optional CodigoCifrado As String = " zyxwvutsrqpoñnmlkjihgfedcba") As String
Dim i As Long
Dim j As Long
Dim retStr As String
Dim c As String * 1
Entrada = LCase(Entrada)
For i = 1 To Len(Entrada)
c = Mid(Entrada, i, 1)
j = InStr(1, CodigoOriginal, c)
If j > 0 Then
retStr = retStr & Mid(CodigoCifrado, j, 1)
Else
retStr = retStr & c
End If
Next i
Cifrado = retStr
End Function
Si cambias el código, ten cuidado de no repetir letras; las que no encuentre en la cadena CodigoOriginal, las dejará tal cual estén en Entrada.
Trastea todo lo que quieras con estos códigos, pero no los uses para nada serio
....
Me acabo de dar cuenta de que no dejé los parámetros por defecto que pensaba, luego tal cual está NO te va a devolver los ejemplos que pusiste... sin embargo, así es reversible: si le pasas el código descifrado, lo cifra, y si lo pasas cifrado, lo descifra, porque los códigos son simétricos. Esto no funcionaría si cambias una de las dos cadenas.