先展示代码
[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站也有人做视频)所以就有了这几行代码。
|