📜  使用带有重复密钥的 XOR 密码进行加密

📅  最后修改于: 2022-05-13 01:54:32.948000             🧑  作者: Mango

使用带有重复密钥的 XOR 密码进行加密

计算机体系结构为所有可打印字符预定义了 ASCII 值和二进制形式,这使我们能够像 XOR 和大多数加密/解密算法所依赖的那样操作按位逻辑。密钥对纯文本进行异或运算以生成加密文本。

仅使用此技术加密纯文本所需的参数:

  1. 纯文本(必须加密的文本)。
  2. 密钥(用于加密的唯一文本字节,可以是任意长度)。

加密处理:

  • 查找“Plain text”和“Key”的长度。
  • 将纯文本分解成与 Key 长度相等的长度。
  • 用密钥分别按各自的顺序对纯文本片段进行异或运算。
  • 将上述异或运算结果存储在一个数组中。
  • 循环完成后,数组包含整个加密文本。

注意:有时您可能需要填充纯文本,以防它与一般块大小不完全一致。这是如何做到的 https://www.geeksforgeeks.org/retaining-the-padded-bytes-of-structural-padding-in-python/

以下是加密重复密钥 XOR的代码;

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


输出: