吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1254|回复: 9
收起左侧

[Python 原创] 字符串中文加密

[复制链接]
QwindF 发表于 2024-6-1 20:28
先展示代码
[Python] 纯文本查看 复制代码
from pypinyin import pinyin, Style


def encrypt_chinese(text):
    encrypted_text = []
    mapping = {}
    for char in text:
        if '\u4e00' <= char <= '\u9fff':  # 检查是否为汉字
            pinyin_list = pinyin(char, style=Style.TONE3, heteronym=False)
            pinyin_str = pinyin_list[0][0]
            # 首字母大写
            pinyin_str = pinyin_str.capitalize()
            # 加入分隔符以便解密时识别
            encrypted_text.append(f"{pinyin_str}#")
            mapping[pinyin_str] = char
        else:
            # 使用特殊标记保存非汉字字符
            encrypted_text.append(f"^{char}")
    return ''.join(encrypted_text), mapping


def decrypt_chinese(encrypted_text, mapping):
    decrypted_text = []
    temp_str = ''
    i = 0
    while i < len(encrypted_text):
        char = encrypted_text[i]
        if char == '#':
            if temp_str:
                decrypted_text.append(mapping.get(temp_str, temp_str))
                temp_str = ''
        elif char == '^':
            if temp_str:
                decrypted_text.append(mapping.get(temp_str, temp_str))
                temp_str = ''
            if i < len(encrypted_text) - 1:
                decrypted_text.append(encrypted_text[i + 1])
                i += 1
        else:
            temp_str += char
        i += 1
    if temp_str:  # 如果最后一个字符不是#或^,则还要处理temp_str
        decrypted_text.append(mapping.get(temp_str, temp_str))
    return ''.join(decrypted_text)


if __name__ == "__main__":
    while True:
        user_input = input("请输入字符串:")
        encrypted_output, mapping = encrypt_chinese(user_input)
        print("加密后的字符串:", encrypted_output)
        print("解密后的字符串:", decrypt_chinese(encrypted_output, mapping))
        print("-" * 30)

缺点,介绍,起因自己看图片吧
[Asm] 纯文本查看 复制代码
请输入字符串:你好世界!这种将汉字转化为拼音的想法很早就有了,最早是接触到无线电的时候引发的,为什么当时无线电传输汉字不用拼音传输呢(应为当时拼音还没出,有兴趣的可以去查查发展史,b站也有人做视频)所以就有了这几行代码。
加密后的字符串: Ni3#Hao3#Shi4#Jie4#^!Zhe4#Zhong3#Jiang1#Han4#Zi4#Zhuan3#Hua4#Wei4#Pin1#Yin1#De#Xiang3#Fa3#Hen3#Zao3#Jiu4#You3#Le#^,Zui4#Zao3#Shi4#Jie1#Chu4#Dao4#Wu2#Xian4#Dian4#De#Shi2#Hou4#Yin3#Fa1#De#^,Wei4#Shen2#Me#Dang1#Shi2#Wu2#Xian4#Dian4#Chuan2#Shu1#Han4#Zi4#Bu4#Yong4#Pin1#Yin1#Chuan2#Shu1#Ne#^(Ying1#Wei4#Dang1#Shi2#Pin1#Yin1#Hai2#Mei2#Chu1#^,You3#Xing1#Qu4#De#Ke3#Yi3#Qu4#Cha2#Cha2#Fa1#Zhan3#Shi3#^,^bZhan4#Ye3#You3#Ren2#Zuo4#Shi4#Pin2#^)Suo3#Yi3#Jiu4#You3#Le#Zhe4#Ji3#Xing2#Dai4#Ma3#^。
解密后的字符串: 你好视界!这种将汉字转化为拼音的想法很早就有了,最早视接触到无线电的时候引发的,为什么当时无线电传输汉字不用拼音传输呢(应为当时拼音还没出,有兴去的可以去查查发展史,b站也有人做视频)所以就有了这几行代码。

17ab5f431472cb7ef0f746f879d3cf2f.png

免费评分

参与人数 2吾爱币 +7 热心值 +2 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
lgc81034 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

atoms 发表于 2024-6-1 20:45
可是这样文字被替换成同音字了
 楼主| QwindF 发表于 2024-6-1 22:54
atoms 发表于 2024-6-1 20:45
可是这样文字被替换成同音字了

对,硬伤。
但是只要句子够长,就可以正确理解意思(我是这样想的)
有些字词可能看不懂,但是读出来就差不多了。
xixicoco 发表于 2024-6-1 23:45
kof888 发表于 2024-6-2 06:00
这个加密后的字符串小学2年级的就能看懂吧
ltgb 发表于 2024-6-2 06:33
Liu4#Yi1#Er2#Tong2#Jie2#Kuai4#Le4#
Zhu4#Da4#Jia1#Neng2#Yi1#Zhi2#Bao3#Chi2#Tong2#Xin1#Liu4#Yi1#Er2#Tong2#Jie2#Kuai4#Le4#
gangdaomeimei 发表于 2024-6-2 08:14
什么用处呢
axaxax 发表于 2024-6-2 10:34
学习学习
skl520 发表于 2024-6-2 10:47
这加密后的中国人一看就懂啊
侃遍天下无二人 发表于 2024-6-2 11:02
可以试试切噜语或者 社**义核心**观 加密,都挺有意思的,而且没有还原成同音字的bug
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表