欢迎访问宙启技术站
智能推送

使用Python创建的20种随机解码器

发布时间:2023-12-11 11:53:23

1. Base64解码器:

import base64

# 编码

message = "Hello, World!"

encoded_message = base64.b64encode(message.encode("utf-8"))

print(encoded_message)

# 解码

decoded_message = base64.b64decode(encoded_message).decode("utf-8")

print(decoded_message)

2. URL解码器:

import urllib.parse

# 编码

url = "https://www.example.com/?q=Python编程"

encoded_url = urllib.parse.quote(url)

print(encoded_url)

# 解码

decoded_url = urllib.parse.unquote(encoded_url)

print(decoded_url)

3. HTML解码器:

import html

# 编码

html_text = "<h1>Hello, World!</h1>"

encoded_html = html.escape(html_text)

print(encoded_html)

# 解码

decoded_html = html.unescape(encoded_html)

print(decoded_html)

4. JSON解码器:

import json

# 编码

json_data = {"name": "John", "age": 30}

encoded_json = json.dumps(json_data)

print(encoded_json)

# 解码

decoded_json = json.loads(encoded_json)

print(decoded_json)

5. XML解码器:

import xml.etree.ElementTree as ET

# 编码

root = ET.Element("root")

child1 = ET.SubElement(root, "child1")

child1.text = "Hello"

child2 = ET.SubElement(root, "child2")

child2.text = "World!"

xml_data = ET.tostring(root).decode("utf-8")

print(xml_data)

# 解码

parsed_xml = ET.fromstring(xml_data)

print(parsed_xml.tag)

6. ROT13解码器:

import codecs

# 编码

message = "Hello, World!"

encoded_message = codecs.encode(message, "rot_13")

print(encoded_message)

# 解码

decoded_message = codecs.decode(encoded_message, "rot_13")

print(decoded_message)

7. ASCII码解码器:

# 编码

text = "Hello, World!"

encoded_text = "".join(str(ord(c)) for c in text)

print(encoded_text)

# 解码

decoded_text = "".join(chr(int(encoded_text[i:i+3])) for i in range(0, len(encoded_text), 3))

print(decoded_text)

8. Morse码解码器:

MORSE_CODE = {

    "A": ".-", "B": "-...", "C": "-.-.", "D": "-..", "E": ".", "F": "..-.", "G": "--.", "H": "....", "I": "..", "J": ".---",

    "K": "-.-", "L": ".-..", "M": "--", "N": "-.", "O": "---", "P": ".--.", "Q": "--.-", "R": ".-.", "S": "...", "T": "-",

    "U": "..-", "V": "...-", "W": ".--", "X": "-..-", "Y": "-.--", "Z": "--.."

}

# 编码

message = "HELLO, WORLD!"

encoded_message = " ".join(MORSE_CODE.get(c.upper(), "") for c in message)

print(encoded_message)

# 解码

decoded_message = "".join(key for value in encoded_message.split(" ") for key, val in MORSE_CODE.items() if val == value)

print(decoded_message)

9. Huffman编码解码器:

from heapq import heappush, heappop, heapify

from collections import defaultdict

import sys

def encode(text):

    frequency = defaultdict(int)

    for character in text:

        frequency[character] += 1

    

    heap = [[weight, [key, ""]] for key, weight in frequency.items()]

    heapify(heap)

    

    while len(heap) > 1:

        lo = heappop(heap)

        hi = heappop(heap)

        for pair in lo[1:]:

            pair[1] = "0" + pair[1]

        for pair in hi[1:]:

            pair[1] = "1" + pair[1]

        heappush(heap, [lo[0] + hi[0]] + lo[1:] + hi[1:])

    

    return sorted(heappop(heap)[1:], key=lambda p: (len(p[-1]), p))

def decode(encoded, codes):

    reverse = {code: char for char, code in codes}

    bitstream = ""

    decoded_text = ""

    for bit in encoded:

        bitstream += bit

        if bitstream in reverse:

            decoded_text += reverse[bitstream]

            bitstream = ""

    return decoded_text

text = "HELLO, WORLD!"

huffman_codes = encode(text)

print(huffman_codes)

encoded = "".join(code for char, code in huffman_codes)

decoded = decode(encoded, huffman_codes)

print(decoded)

10. Caesar解码器:

def caesar_encode(text, shift):

    encoded_text = ""

    for char in text:

        if char.isalpha():

            ascii_offset = ord("A") if char.isupper() else ord("a")

            encoded_char = chr((ord(char) - ascii_offset + shift) % 26 + ascii_offset)

            encoded_text += encoded_char

        else:

            encoded_text += char

    return encoded_text

def caesar_decode(encoded_text, shift):

    return caesar_encode(encoded_text, -shift)

text = "HELLO, WORLD!"

shift = 3

encoded = caesar_encode(text, shift)

print(encoded)

decoded = caesar_decode(encoded, shift)

print(decoded)

11. Rail Fence解码器:

def rail_fence_encode(text, rails):

    fence = [[None] * len(text) for _ in range(rails)]

    rail = 0

    direction = 1

    for char in text:

        fence[rail] = char

        rail += direction

        if rail == rails - 1 or rail == 0:

            direction *= -1

    

    encoded_text = "".join(char for rail in fence for char in rail if char is not None)

    return encoded_text

def rail_fence_decode(encoded_text, rails):

    fence = [[None] * len(encoded_text) for _ in range(rails)]

    rail = 0

    direction = 1

    for char in encoded_text:

        fence[rail] = "@"

        rail += direction

        if rail == rails - 1 or rail == 0:

            direction *= -1

    

    index = 0

    for rail in range(rails):

        for pos in range(len(encoded_text)):

            if fence[rail][pos] == "@":

                fence[rail][pos] = encoded_text[index]

                index += 1

    

    rail = 0

    direction = 1

    decoded_text = ""

    for _ in range(len(encoded_text)):

        decoded_text += fence[rail].pop(0)

        rail += direction

        if rail == rails - 1 or rail == 0:

            direction *= -1

    

    return decoded_text

text = "HELLO, WORLD!"

rails = 3

encoded = rail_fence_encode(text, rails)

print(encoded)

decoded = rail_fence_decode(encoded, rails)

print(decoded)

12. Morse码解码器 (使用外部库 morse):

import morse

# 编码

message = "HELLO, WORLD!"

encoded_message = morse.encode(message)

print(encoded_message)

# 解码

decoded_message = morse.decode(encoded_message)

print(decoded_message)

13. 国际信号码解码器:

import pyttsx3

# 编码

message = "HELLO, WORLD!"

encoded_message = pyttsx3.init()

encoded_message.save_to_file(message, "encoded_message.wav")

encoded_message.runAndWait()

# 解码

decoded_message = pyttsx3.init()

decoded_message.setProperty("rate", 150)

decoded_message.setProperty("volume", 0.8)

decoded_message.say("encoded_message.wav")

decoded_message.runAndWait()

14. 摩尔斯电码解码器 (使用外部库 winsound):

import winsound

# 编码

morse_code = {"A": ".-", "B": "-...", "C": "-.-.", "D": "-..", "E": ".", "F": "..-.", "G": "--.", "H": "....", "I": "..", "J": ".---",

    "K": "-.-", "L": ".-..", "M": "--", "N": "-.", "O": "---", "P": ".--.", "Q": "--.-", "R": ".-.", "S": "...", "T": "-",

    "U": "..-", "V": "...-", "W": ".--", "X": "-..-", "Y": "-.--", "Z": "--.."}

frequency = 550

duration = 200

message = "HELLO, WORLD!"

encoded_message = [morse_code.get(char.upper(), "") for char in message]

for code in encoded_message:

    for dot_or_dash in code:

        if dot_or_dash == ".":

            winsound.Beep(frequency, duration)

        elif dot_or_dash == "-":

            winsound.Beep(frequency, duration * 3)

        else:

            continue

        winsound.Sleep(duration)

    winsound.Sleep(duration * 2)

15. ASCII码解码器 (使用外部库 pyfiglet):

import pyfig