字符串中文加密
先展示代码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
# 首字母大写
pinyin_str = pinyin_str.capitalize()
# 加入分隔符以便解密时识别
encrypted_text.append(f"{pinyin_str}#")
mapping = 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
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
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)
缺点,介绍,起因自己看图片吧
请输入字符串:你好世界!这种将汉字转化为拼音的想法很早就有了,最早是接触到无线电的时候引发的,为什么当时无线电传输汉字不用拼音传输呢(应为当时拼音还没出,有兴趣的可以去查查发展史,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站也有人做视频)所以就有了这几行代码。
可是这样文字被替换成同音字了{:1_925:} atoms 发表于 2024-6-1 20:45
可是这样文字被替换成同音字了
对,硬伤。
但是只要句子够长,就可以正确理解意思(我是这样想的)
有些字词可能看不懂,但是读出来就差不多了。 有点意思 这个加密后的字符串小学2年级的就能看懂吧;www Liu4#Yi1#Er2#Tong2#Jie2#Kuai4#Le4#
Zhu4#Da4#Jia1#Neng2#Yi1#Zhi2#Bao3#Chi2#Tong2#Xin1#Liu4#Yi1#Er2#Tong2#Jie2#Kuai4#Le4#
什么用处呢 学习学习 这加密后的中国人一看就懂啊 可以试试切噜语或者 社**义核心**观 加密,都挺有意思的,而且没有还原成同音字的bug
页:
[1]
2