用XOR 15转换输入

发布于 2025-01-26 06:07:43 字数 1675 浏览 3 评论 0原文

我正在尝试使用三种不同类型或密码的密码输入,并且我完全卡在XOR 15上。

import string

def caesar(text, shift, alphabets):

    def shift_alphabet(alphabet):
        return alphabet[shift:] + alphabet[:shift]

    shifted_alphabets = tuple(map(shift_alphabet, alphabets))
    final_alphabet = ''.join(alphabets)
    final_shifted_alphabet = ''.join(shifted_alphabets)
    table = str.maketrans(final_alphabet, final_shifted_alphabet)
    return text.translate(table)

plaintext = input("Enter a sentence to encode: >")
shifted = int(input("Shift by how much? >"))

print("Caesar results:")
print("Original: ", plaintext)
print("Cipher: ",(caesar(plaintext, shifted, [string.printable])))

def rot13(text):
    return ''.join([chr((ord(letter) - 97 + 13) % 26 + 97)
                    if 97 <= ord(letter) <= 122
                    else letter
                for letter in text.lower()])
print("Rot13 results: ")
print("Original: ", plaintext)
print("Rot13:",(rot13(plaintext))) 


def xor(plaintext,number):
    L = list(plaintext)
    L2 = [ord(value) ^ number for value in L]
    return L2

i = plaintext.encode('utf-8')
xor_number = 00;
results = xor(plaintext,xor_number)
print ("XOR 15 results:")
print ("Original hex:", i.hex(' '))
print ("XOR 15 hex:",  results)

当我在用户输入后获得结果时,我只会获得常规的ASCII值,而不是原始HEX的XOR 15 。我要去哪里?

当前结果:

XOR 15 results:
Original hex: 41 42 44 20 78 79 7a 20 31 32 33 21
XOR 15 hex: [65, 66, 68, 32, 120, 121, 122, 32, 49, 50, 51, 33]

预期结果:

XOR 15 results:
Original hex: 41 42 44 20 78 79 7a 20 31 32 33 21
XOR 15 hex: [be, bd, bc, df, 87, 86, 85, df, ce, cd, cc, de]

I'm trying to cipher input with three different type or ciphers, and I am completely stuck on XOR 15.

import string

def caesar(text, shift, alphabets):

    def shift_alphabet(alphabet):
        return alphabet[shift:] + alphabet[:shift]

    shifted_alphabets = tuple(map(shift_alphabet, alphabets))
    final_alphabet = ''.join(alphabets)
    final_shifted_alphabet = ''.join(shifted_alphabets)
    table = str.maketrans(final_alphabet, final_shifted_alphabet)
    return text.translate(table)

plaintext = input("Enter a sentence to encode: >")
shifted = int(input("Shift by how much? >"))

print("Caesar results:")
print("Original: ", plaintext)
print("Cipher: ",(caesar(plaintext, shifted, [string.printable])))

def rot13(text):
    return ''.join([chr((ord(letter) - 97 + 13) % 26 + 97)
                    if 97 <= ord(letter) <= 122
                    else letter
                for letter in text.lower()])
print("Rot13 results: ")
print("Original: ", plaintext)
print("Rot13:",(rot13(plaintext))) 


def xor(plaintext,number):
    L = list(plaintext)
    L2 = [ord(value) ^ number for value in L]
    return L2

i = plaintext.encode('utf-8')
xor_number = 00;
results = xor(plaintext,xor_number)
print ("XOR 15 results:")
print ("Original hex:", i.hex(' '))
print ("XOR 15 hex:",  results)

When I get my results back after the user input I am only getting the regular ascii value instead of an XOR 15 of the original hex. Where am I going wrong?

Current Results:

XOR 15 results:
Original hex: 41 42 44 20 78 79 7a 20 31 32 33 21
XOR 15 hex: [65, 66, 68, 32, 120, 121, 122, 32, 49, 50, 51, 33]

Expected Results:

XOR 15 results:
Original hex: 41 42 44 20 78 79 7a 20 31 32 33 21
XOR 15 hex: [be, bd, bc, df, 87, 86, 85, df, ce, cd, cc, de]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文