Implementación de cifrado César simple, muy fácil

Concepto y Principio

Según la explicación de la Enciclopedia Baidu, el cifrado César es un antiguo algoritmo de cifrado.

El uso de cifrados se remonta a la época de los antiguos romanos. Las Guerras de las Galias describen que César alguna vez usó cifrados para transmitir información, el llamado "cifrado de César", que es un cifrado alternativo que empuja las letras en secuencia. Los últimos 3 dígitos desempeñar una función de encriptación, como reemplazar la letra A con la letra D y reemplazar la letra B con la letra E. Debido a que se dice que César fue uno de los primeros generales antiguos en usar letras encriptadas, este método de encriptación se llama cifrado César. Este es un método de cifrado simple. La densidad de esta contraseña es muy baja y se puede descifrar simplemente contando la frecuencia de las palabras. Ahora también se llama "cifrado por desplazamiento", pero el número de movimientos no es necesariamente de 3 bits.

La criptografía se puede dividir aproximadamente en dos categorías, a saber, translocación y sustitución y, por supuesto, existen métodos más complejos que combinan las dos. En la translocación, la letra no cambia, pero la posición cambia; en la sustitución, la letra cambia, pero la posición no cambia.

El primer uso documentado de cifrados de sustitución para uso militar es el Libro de galo de César. César describe cómo envió cartas secretas a Cicerón, que estaba sitiado y al borde de la rendición. Las letras romanas fueron reemplazadas por letras griegas para que el enemigo no pudiera entender la información en absoluto.

Uno de los cifrados de sustitución utilizados por César se describe en detalle en la "Biografía de César" de Sutonio, escrita en el siglo II d.C. César simplemente reemplazó cada letra del mensaje con la tercera letra del alfabeto después de esa letra. Esta sustitución de cifrado a menudo se denomina cifrado de desplazamiento César, o simplemente, cifrado César.

En criptografía, el cifrado César (o cifrado César, transformación César, cifrado de transformación) es la tecnología de cifrado más simple y más conocida. Es una técnica para reemplazar el cifrado. Este método de encriptación lleva el nombre de César, quien usó este método para comunicarse con sus generales. El cifrado César se usa a menudo como un paso en otros métodos de cifrado más complejos, como el cifrado de Virginia. El cifrado César también se usa en los sistemas ROT13 modernos. Pero como todas las técnicas de cifrado que utilizan alfabetos para reemplazar, el cifrado César es muy fácil de descifrar y es imposible garantizar la seguridad de la comunicación en aplicaciones prácticas.

Habiendo dicho tanto, creo que todos pueden estar un poco mareados.El método de cifrado de la siguiente imagen es implementar la función de cifrado por tres bits incorrectos.

(1) Ideas de diseño:

  1. Dado que la entrada es una cadena de caracteres en inglés, usamos la clase String para escribir, y la clase String tiene muchos métodos que se pueden llamar
  2. La dislocación debe operar en cada carácter. La cadena se puede convertir en una matriz de caracteres y se llama al método toCharArray de la clase de cadena.
  3. Dado que la clase de cadena también usa el conjunto de caracteres Unicode, solo necesitamos leer un carácter al realizar la operación de dislocación, agregarlo al número 3 y luego convertirlo al tipo char para implementar la operación de cifrado de 3 bits incorrecta, y reste 3 para el descifrado.
  4. En la operación de encriptación, si la encriptación son las tres últimas letras del alfabeto, se debe implementar una operación circular, es decir, la encriptación X es A, la encriptación Y es B, la encriptación Z es C, y para lograr esto se utiliza el código ASCII. Cuando se lee XYZ, el cifrado se convierte en tipo de caracteres después de restar 23. Por supuesto, ABC más 23 se puede leer al descifrar

(2) Diagrama de flujo del programa:

Proceso de implementación

Definimos una clave=13, en este momento encriptamos la cadena Este es mi mensaje secreto

import pyperclip

message = 'This is my secret message'#保存加密或解密的字符串
key = 13#保存加密密钥的整数

mode = 'encrypt'

LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

translated = ''

message = message.upper()

for symbol in message:
    if symbol in LETTERS:
        num = LETTERS.find(symbol)
        if mode == 'encrypt':
            num = num + key
        elif mode == 'decrypt':
            num = num - key

        if num >= len(LETTERS):
            num = num - len(LETTERS)
        elif num < 0:
            num = num + len(LETTERS)

        translated = translated + LETTERS[num]

    else:
        translated = translated + symbol

print(translated)

pyperclip.copy(translated)

El resultado de la impresión es el siguiente:

GUVF VF ZL FRPERG ZRFFNTR
[Finished in 0.8s]

Analicemos el código anterior.

Podemos ver que la primera línea llama a un módulo pyperclip, necesitamos descargar este módulo, muy simple, instale un pip, ingrese directamente pip install pyperclip para completar la instalación

message = 'This is my secret message'#保存加密或解密的字符串
key = 13#保存加密密钥的整数

el mensaje especifica la cadena utilizada para guardar el cifrado y el descifrado

La clave se utiliza para almacenar la clave de cifrado.

message = message.upper()

Se llama a una función superior para convertir todas las cadenas cifradas y descifradas en letras mayúsculas

El siguiente proceso de implementación es muy simple, juzgue si el valor del modo es encriptado y luego cambie los caracteres

Principio de craqueo e implementación

Descifraremos la cadena cifrada, y el principio de implementación es el siguiente:

import pyperclip

message = 'GUVF VF ZL FRPERG ZRFFNTR'

LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

for key in range(len(LETTERS)):

    translated = ''

    for symbol in message:
        if symbol in LETTERS:
            num = LETTERS.find(symbol)
            num = num - key

            if num < 0:
                num = num + len(LETTERS)

            translated = translated + LETTERS[num]

        else:
            translated = translated + symbol

    print('Key #%s:%s'%(key,translated))

El resultado de la impresión es el siguiente:

Key #0:GUVF VF ZL FRPERG ZRFFNTR
Key #1:FTUE UE YK EQODQF YQEEMSQ
Key #2:ESTD TD XJ DPNCPE XPDDLRP
Key #3:DRSC SC WI COMBOD WOCCKQO
Key #4:CQRB RB VH BNLANC VNBBJPN
Key #5:BPQA QA UG AMKZMB UMAAIOM
Key #6:AOPZ PZ TF ZLJYLA TLZZHNL
Key #7:ZNOY OY SE YKIXKZ SKYYGMK
Key #8:YMNX NX RD XJHWJY RJXXFLJ
Key #9:XLMW MW QC WIGVIX QIWWEKI
Key #10:WKLV LV PB VHFUHW PHVVDJH
Key #11:VJKU KU OA UGETGV OGUUCIG
Key #12:UIJT JT NZ TFDSFU NFTTBHF
Key #13:THIS IS MY SECRET MESSAGE
Key #14:SGHR HR LX RDBQDS LDRRZFD
Key #15:RFGQ GQ KW QCAPCR KCQQYEC
Key #16:QEFP FP JV PBZOBQ JBPPXDB
Key #17:PDEO EO IU OAYNAP IAOOWCA
Key #18:OCDN DN HT NZXMZO HZNNVBZ
Key #19:NBCM CM GS MYWLYN GYMMUAY
Key #20:MABL BL FR LXVKXM FXLLTZX
Key #21:LZAK AK EQ KWUJWL EWKKSYW
Key #22:KYZJ ZJ DP JVTIVK DVJJRXV
Key #23:JXYI YI CO IUSHUJ CUIIQWU
Key #24:IWXH XH BN HTRGTI BTHHPVT
Key #25:HVWG WG AM GSQFSH ASGGOUS
[Finished in 0.2s]

Podemos ver que la Clave #13 es la respuesta que estamos buscando.

Supongo que te gusta

Origin blog.csdn.net/qq_41701956/article/details/123455294
Recomendado
Clasificación