我正在尝试为下面的加密逻辑编写一个解密逻辑
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))
我终于弄明白了。我想为rotatel写一个反向逻辑-
我就是这样做的-
例如:
因此,您需要的是:
但你必须记住,你
xor
y(561234)和kxor
在你rotatel
之后。因此,您必须再次使用kxor
获得reverse_rotatel
之前的y相关问题 更多 >
编程相关推荐