Red de conocimiento informático - Aprendizaje de código fuente - ¡Problemas de cifrado y descifrado de texto en idiomas sencillos!

¡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 + 1

Si 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)

.