聊天怕被老板发现?摩斯密码来帮你

上班没事儿干,摸鱼聊天害怕老板发现,那怎么办呢,又想跟好基友聊天又得不能让领导发现,于是咱们直接在代码中摸鱼呗!即使老板看到了, 他看到的也是代码,哈哈除非老板懂代码那就没办法了!

好了废话不多说,今天带来摩斯密码聊天术!

先了解一下摩斯密码:最初是为拉丁字母设计的,但我们可以扩展这个概念来处理汉语。实现汉语转摩斯密码,并提供完整的代码实现。

准备阶段

首先我们我们在网上找到摩斯密码然后进行摩斯密码和我们的英文字母的映射,因为摩斯密码它支持和英文字母之间的转化,假如直接使用汉字的话,是有些不可能的,我们中国汉字博大精深,怎么一一去对应呢。

python 复制代码
# 定义摩斯密码映射表
MORSE_CODE_DICT = {
    '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': '--..', '0': '-----', '1': '.----', '2': '..---',
    '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...',
    '8': '---..', '9': '----.', ' ': '/'
}

# 添加一些程序员常用符号
MORSE_CODE_DICT['{'] = '-.--.'
MORSE_CODE_DICT['}'] = '-.--.-'
MORSE_CODE_DICT['['] = '-.--.'
MORSE_CODE_DICT[']'] = '-.--.-'
MORSE_CODE_DICT['#'] = '.-.-'
MORSE_CODE_DICT['*'] = '-..-'
MORSE_CODE_DICT['%'] = '-.-.-'

好了我们的摩斯密码和对应的英文字母已经对应好了,接下来进行分析,大概是分为两部分一个是加密一个是解密。

因为我们肯定要用到输入的时候是汉语的,所以我们中间得使用一个翻译器,刚开始的时候安装的是谷歌的翻译器

安装流程大概如下:

然后在我们的的文件中引入应该就可以使用的

但是这个好像不是很稳定,不停地报错,服务超时什么的,既然是这种情况那就只能果断放弃了。(PS:大家可以试试,反正我的不停的报服务超时。)

既然这个用不了,那么就选个我们经常使用的百度翻译吧!这样起码稳当一些。既然使用百度翻译就得调用它的API。

我们登录注册到百度翻译的开发者平台:百度翻译开发者平台

进来以后我们可以看到这里有一个通用文本翻译,我们的要求不高就使用这个就可以了,点击查看详情

点击进来以后可以看到这个

跟着开发者文档一步步往下走就行了,申请appid和秘钥

我们选择这个标准版的就完全够用了,然后进行开通以后

就可以获取到我们需要的appid和秘钥了

appid和秘钥在开发者中心可以找到。

加密和解密

上述准备工作做好以后,就开始我们今天的重头戏了。

准备工作已经写好了摩斯密码映射表,那我们就写核心的代码:加密、解密、和进行文本翻译了。

定义加密函数:

python 复制代码
"""
加密函数
将文本转换为摩斯密码
"""


def text_to_morse(text):
    morse_code = []
    for char in text.upper():
        if char in MORSE_CODE_DICT:
            morse_code.append(MORSE_CODE_DICT[char])
        else:
            # 如果字符不在映射表中,保留原样
            morse_code.append(char)
    return ' '.join(morse_code)

定义解密函数:

arduino 复制代码
"""
将摩斯密码转换回文本
"""


def morse_to_text(morse_code):
    morse_to_char = {v: k for k, v in MORSE_CODE_DICT.items()}

    words = morse_code.split(' / ')
    text = []

    for word in words:
        chars = word.split()
        for char in chars:
            if char in morse_to_char:
                text.append(morse_to_char[char])
            else:
                # 如果摩斯码不在映射表中,保留原样
                text.append(char)
        text.append(' ')  # 单词间加空格

    return ''.join(text).strip()

百度翻译函数:

python 复制代码
"""
    调用百度翻译API
    
"""
def make_md5(s, encoding='utf-8'):
    return md5(s.encode(encoding)).hexdigest()

def api_to_text(content,from_lang,to_lang):
    salt = random.randint(32768, 65536)
    sign = make_md5(appid + content + str(salt) + appkey)
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    payload = {'appid': appid, 'q': content, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}

    r = requests.post(url, params=payload, headers=headers)
    result = r.json()
    # result = json.dumps(result, indent=4, ensure_ascii=False)
    return result

man函数:

python 复制代码
def main():
    while True:
        print("\n程序员摩斯密码工具")
        print("1. 文本 -> 摩斯密码")
        print("2. 摩斯密码 -> 文本")
        print("3. 退出")

        choice = input("请选择操作 (1/2/3): ")

        if choice == '1':
            text = input("请输入要加密的文本: ")
            # 将中文翻译为英文
            content = api_to_text(text,"zh","en")
            # print(f"{content}")
            new_text = content["trans_result"][0]["dst"]
            # print(f"{new_text}")
            morse = text_to_morse(new_text)
            print(f"摩斯密码: {morse}")

        elif choice == '2':
            morse = input("请输入摩斯密码 (用空格分隔点划,用/分隔单词): ")
            text = morse_to_text(morse)
            # 将英文翻译为中文
            content = api_to_text(text,"en","zh")
            new_text = content["trans_result"][0]["dst"]
            print(f"解密文本: {new_text}")

        elif choice == '3':
            print("再见!")
            break

        else:
            print("无效选择,请重新输入!")


if __name__ == "__main__":
    main()

代码就是这么简单,让我们执行看看效果吧!

怎么样,可以吧!再也不怕摸鱼的时候被老板看见了。

最后附上完整代码

python 复制代码
# -*- coding: utf-8 -*-
"""
@Created on : 2025/8/22 17:58
@creator : er_nao
@File :摩斯密码.py
@Description :
"""
from googletrans import Translator, LANGUAGES
import requests
import random
import json
from hashlib import md5

# 定义摩斯密码映射表
MORSE_CODE_DICT = {
    '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': '--..', '0': '-----', '1': '.----', '2': '..---',
    '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...',
    '8': '---..', '9': '----.', '.': '.-.-.-', ',': '--..--', '?': '..--..',
    "'": '.----.', '!': '-.-.--', '/': '-..-.', '(': '-.--.', ')': '-.--.-',
    '&': '.-...', ':': '---...', ';': '-.-.-.', '=': '-...-', '+': '.-.-.',
    '-': '-....-', '_': '..--.-', '"': '.-..-.', '$': '...-..-', '@': '.--.-.',
    ' ': '/', '<': '.-.-.-', '>': '-.--.-'
}

# 添加一些程序员常用符号
MORSE_CODE_DICT['{'] = '-.--.'
MORSE_CODE_DICT['}'] = '-.--.-'
MORSE_CODE_DICT['['] = '-.--.'
MORSE_CODE_DICT[']'] = '-.--.-'
MORSE_CODE_DICT['#'] = '.-.-'
MORSE_CODE_DICT['*'] = '-..-'
MORSE_CODE_DICT['%'] = '-.-.-'

appid = '自己申请的appid'
appkey = '自己的秘钥'
endpoint = 'http://api.fanyi.baidu.com'
path = '/api/trans/vip/translate'
url = endpoint + path
# from_lang = 'zh'
# to_lang =  'en'



"""
加密函数
将文本转换为摩斯密码
"""


def text_to_morse(text):
    morse_code = []
    for char in text.upper():
        if char in MORSE_CODE_DICT:
            morse_code.append(MORSE_CODE_DICT[char])
        else:
            # 如果字符不在映射表中,保留原样
            morse_code.append(char)
    return ' '.join(morse_code)


"""
    将摩斯密码转换回文本
"""


def morse_to_text(morse_code):
    morse_to_char = {v: k for k, v in MORSE_CODE_DICT.items()}

    words = morse_code.split(' / ')
    text = []

    for word in words:
        chars = word.split()
        for char in chars:
            if char in morse_to_char:
                text.append(morse_to_char[char])
            else:
                # 如果摩斯码不在映射表中,保留原样
                text.append(char)
        text.append(' ')  # 单词间加空格

    return ''.join(text).strip()



"""
    调用百度翻译API
    
"""
def make_md5(s, encoding='utf-8'):
    return md5(s.encode(encoding)).hexdigest()

def api_to_text(content,from_lang,to_lang):
    salt = random.randint(32768, 65536)
    sign = make_md5(appid + content + str(salt) + appkey)
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    payload = {'appid': appid, 'q': content, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}

    r = requests.post(url, params=payload, headers=headers)
    result = r.json()
    # result = json.dumps(result, indent=4, ensure_ascii=False)
    return result




def main():
    while True:
        print("\n程序员摩斯密码工具")
        print("1. 文本 -> 摩斯密码")
        print("2. 摩斯密码 -> 文本")
        print("3. 退出")

        choice = input("请选择操作 (1/2/3): ")

        if choice == '1':
            text = input("请输入要加密的文本: ")
            # 将中文翻译为英文
            content = api_to_text(text,"zh","en")
            # print(f"{content}")
            new_text = content["trans_result"][0]["dst"]
            # print(f"{new_text}")
            morse = text_to_morse(new_text)
            print(f"摩斯密码: {morse}")

        elif choice == '2':
            morse = input("请输入摩斯密码 (用空格分隔点划,用/分隔单词): ")
            text = morse_to_text(morse)
            # 将英文翻译为中文
            content = api_to_text(text,"en","zh")
            new_text = content["trans_result"][0]["dst"]
            print(f"解密文本: {new_text}")

        elif choice == '3':
            print("再见!")
            break

        else:
            print("无效选择,请重新输入!")


if __name__ == "__main__":
    main()
相关推荐
ygy.白茶11 分钟前
线性回归入门级
人工智能·python·机器学习
why技术20 分钟前
在我眼里,这就是天才般的算法!
后端·面试
绝无仅有21 分钟前
Jenkins+docker 微服务实现自动化部署安装和部署过程
后端·面试·github
程序视点24 分钟前
Escrcpy 3.0投屏控制软件使用教程:无线/有线连接+虚拟显示功能详解
前端·后端
zhuyasen1 小时前
当Go框架拥有“大脑”,Sponge框架集成AI开发项目,从“手写”到一键“生成”业务逻辑代码
后端·go·ai编程
刘同学Python学习日记1 小时前
Python 办公自动化实战:Excel 批量处理 + 自动发邮件
python
mit6.8241 小时前
[Vid-LLM] 功能分类体系 | 视频如何被“观看“ | LLM的主要作用
人工智能·python
东皋长歌1 小时前
SpringBoot集成ELK
spring boot·后端·elk
布列瑟农的星空2 小时前
大话设计模式——关注点分离原则下的事件处理
前端·后端·架构
青铜发条2 小时前
【python】python进阶——logging日志模块
python