¡Problemas de cifrado y descifrado de texto en idiomas sencillos!
Se recomienda no utilizar directamente el comando text() para convertir datos cifrados en texto. Se recomienda utilizar la codificación base64 en texto. Al descifrar, primero descifre base64 y luego descifre.
La codificación y decodificación se pueden lograr utilizando los comandos de codificación BASE64 () y decodificación BASE64 () en la biblioteca de soporte de súper cifrado y descifrado.
Si no desea descargar la biblioteca de soporte, el siguiente es el código para la codificación y decodificación BASE64:
Versión 2
. Codificación BASE64, tipo de texto, público, procesamiento de codificación BASE64 (devuelve el texto codificado)
Datos de parámetros a codificar, conjunto de bytes, conjunto de bytes a codificar
. resto
.Variable local temporal, tipo byte, "3"
.Variable local variable
.Conjunto de variables locales, conjunto de bytes
.Local Longitud de variable, tipo entero
Carácter de variable local, conjunto de bytes
Variable local i
Longitud = Obtener la longitud del conjunto de bytes. (datos a codificar)
.Si es verdadero (longitud < 1)
Retorno ("")
.Si es verdadero, final
Restante = longitud% 3
.Si es verdadero (resto > 0)
Datos a codificar = datos a codificar + tomar el conjunto de bytes en blanco (3 - resto)
.Si es verdadero Fin
Longitud = Obtiene la longitud del conjunto de bytes (datos a codificar)
Carácter = Obtiene el conjunto de bytes en blanco (longitud × 4 ÷ 3)
i = 1
Establecer = conjunto de bytes ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 /")
.Cabeza de bucle variable (1, longitud, 3, variable )
Temporal [1 ] = Datos a codificar [variable]
Temporal [2] = Datos a codificar [variable + 1]
Temporal [ 3] = Datos a codificar [variable + 2]
p>Carácter [i] = establecer [desplazamiento a la derecha (temporal [1], 2) + 1]
Carácter [ i + 1] = establecer [desplazamiento a la izquierda (bit AND (temporal [1] ], 3), 4) + desplazamiento a la derecha (temporal [2], 4) + 1]
Carácter [i + 2 ] = establecer [desplazamiento a la izquierda (bit AND (temporal [2], 15), 2) + desplazamiento a la derecha (temporal [3], 6) + 1]
Carácter [i + 3] = establecer [ bit AND (temporal [3], 63) + 1]
i = i + 4
Cola de bucle variable()
. > 0)
Longitud = Obtener la longitud del conjunto de bytes (Carácter)
.If (resto = 1)
Carácter [longitud - 1] = Obtener código ("=", )
Carácter [longitud] = Obtener el código ("=", )
De lo contrario
Carácter [longitud] =. Obtenga el código ("=", )
. If end
p>.If true end
Regresar (al texto (carácter))
Decodificación de subrutina BASE64, conjunto de bytes, público, procesamiento de decodificación BASE64 (regreso después de decodificar datos del conjunto de bytes)
Parámetro de texto codificado, tipo de texto, referencia, texto a decodificar
.. Longitud del texto de la variable local
. Entero de la variable local Múltiple
Grupo de tres bytes de la variable local, tipo de byte, "3"
. grupo variable de cuatro bytes,
Tipo de byte, "4"
.Valor de codificación de variable local
.Variable local X
.Variable local n
. datos binarios, conjunto de bytes
Texto codificado = eliminar todo vacío (texto codificado)
Texto codificado = reemplazo de subtexto (texto codificado, #newline, , , , true )
Longitud del texto = Obtener la longitud del texto (texto codificado)
Múltiplo entero = Longitud del texto\ 4
Si es verdadero (longitud del texto% 4 ≠ 0)
<. p>Múltiplo entero = Múltiplo entero + 1Si es verdadero final
Cabeza del bucle de conteo (múltiplo entero, X)
.Cabeza del bucle de conteo (4). , n)
Grupo de cuatro bytes [n] = Obtener código (texto codificado, (X - 1) × 4 + n)
Valor codificado = Buscar texto("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 / ", carácter(quad[n]), , false)
.Si es verdadero (valor codificado = -1)
Salir del bucle ( )
.Finalizar si es verdadero
Grupo de cuatro bytes [n] = valor codificado - 1
Cola de bucle de conteo()
Triple[1] = Bit O. (Cuad[1] × 4, Cuad[2] ÷ 16)
Triplete[2] = Bit O (Cuad[2] × 16, Cuad[3] ÷ 4)
Trit[3] = Bit OR (Quad[3] × 64, grupo de cuatro bytes [4])
Datos binarios = datos binarios + conjunto de bytes (grupo de tres bytes)
Procesamiento de evento ()
.Cálculo del segundo bucle tail()
Si es verdadero (n < 5) ' El último grupo de 4 caracteres sale temprano y el byte se establece. es interceptado
n = 5 - n
Datos binarios = Obtener el lado izquierdo del conjunto de bytes (datos binarios, obtener la longitud del conjunto de bytes (datos binarios) - n)
Si es verdadero, finaliza
Devuelve (datos binarios)
.