Las arquitecturas informáticas tienen valores ASCII predefinidos y formas binarias para todos los caracteres imprimibles, lo que nos permite operar con lógica bit a bit como XOR y depende de la mayoría de los algoritmos de cifrado/descifrado. La clave funciona con XOR en el texto sin formato para producir el texto cifrado.
Solo los parámetros necesarios para cifrar un texto sin formato utilizando esta técnica:
- Texto sin formato (texto que tiene que ser encriptado).
- Clave (byte único de texto que se utiliza para cifrar, puede tener cualquier longitud).
Procesamiento de cifrado:
- Encontrar las longitudes de «Texto sin formato» y «Clave».
- Dividir el texto sin formato en partes de longitud equivalente a la longitud de Key.
- XOR-ring las piezas de texto sin formato con la clave en el orden respectivo individualmente.
- Almacene el resultado anterior operado por XOR en una array.
- Cuando finaliza el bucle, la array contiene todo el texto cifrado.
Nota: A veces, es posible que deba rellenar el texto sin formato en caso de que no esté bien alineado con el tamaño general del bloque. Aquí está cómo hacerlo https://www.geeksforgeeks.org/retaining-the-padded-bytes-of-structural-padding-in-python/
A continuación se muestra el código para cifrar XOR de clave repetida ;
Python3
def repeated_key_xor(plain_text, key): # returns plain text by repeatedly xoring it with key pt = plain_text len_key = len(key) encoded = [] for i in range(0, len(pt)): encoded.append(pt[i] ^ key[i % len_key]) return bytes(encoded) # Driver Code def main(): plain_text = b'Burning \'em, if you ain\'t quick and nimble\nI go crazy when I hear a cymbal' key = b'ICE' print("Plain text: ", plain_text) print("Encrypted as: ", repeated_key_xor(plain_text, key).hex()) if __name__ == '__main__': main()
Producción:
Texto sin formato: b»Quemarlos, si no eres rápido y ágil\nMe vuelvo loco cuando escucho un címbalo»
Encrypted as: 0b3637272a2b2e63622c2e69692a23693a2a3c6324202d623d63343c2a26226324272765272a282b2f20430a652e2c652a3124333a653e2b2027630c692b20283165286326302e27282f
Publicación traducida automáticamente
Artículo escrito por poornapragnamath y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA