【发布时间】:2021-12-06 00:44:09
【问题描述】:
我正在尝试为以下加密逻辑编写解密逻辑。
import os
import string
keybytes = bytes(os.urandom(8))
bit = keybytes[0] % 7 + 1
kxor = []
key = ""
for i in range(1, 8):
kxor.append(ord(string.ascii_letters[keybytes[i] % len(string.ascii_letters)]))
key = key + chr(kxor[i-1])
print("Key is %s rotated by %d bits." % (key, bit))
def rotatel(x, bit):
return ((x << bit) & 0xff) | (x >> (8 - bit))
plaintext = "ABCDE"
bit = 6
kxor = [65,115,113,107,98,75,85]
encryptedText = []
for i in range(0, len(plaintext)):
encryptedText.append(rotatel(plaintext[i], bit) ^ kxor[i % len(kxor)])
print (bytes.encryptedText)
现在,bit 和 kxor 值,我已经对它们进行了硬编码,因为我可以将它们取回;这意味着如果这些是我用于加密的值,因此我可以在编写解密逻辑时以编程方式获取kxor。
我苦苦挣扎的是rotatel 函数。
我试图扭转这种逻辑,但我无法弄清楚如何。所以需要一些指针来反转rotatel 函数。
这是正确的方式还是我完全以错误的方式处理这个问题?
基本上我的问题是我如何反转return ((x << bit) & 0xff) | (x >> (8 - bit))
【问题讨论】:
标签: python encryption cryptography