当前位置: 首页 > article >正文

Python 字符串加密

问题描述

给定一个字符串msg,将该字符串加密secret,再将加密后的字符串secret解密decode_secret

具体做法

需要引入string模块。
str.maketrans()

  • 用于创建字符替换的映射表。
  • 需要定义源字符source和目标字符output的对应关系translate_table
  • 在使用str.maketrans(source, output)时,sourceoutput长度必须一致,因为每个字符在source中对应一个字符在output中。

str.translate()

  • 根据映射表translate_table对字符串进行字符替换或删除。
  • 适用于加密、数据清理、文本标准化等多种场景。
  • translate()操作中,未在映射表中定义的字符将保持不变
import string

source = string.printable
output = string.printable[::-1]
# print(f"source: {source}")
print(f"type(source): {type(source)}")
# print(f"output: {output}")
print(f"type(output): {type(output)}")
translate_table = str.maketrans(source, output)
# print(translate_table)
print(f"type(translate_table): {type(translate_table)})")
msg = "Today is a good day."
secret = msg.translate(translate_table)
print(f"msg: {msg}\nsecret: {secret}")

decode_table = str.maketrans(output, source)
decode_secret = secret.translate(decode_table)
print(f"secret: {secret}\ndecode_secret: {decode_secret}")

运行效果如下:

type(source): <class ‘str’>
type(output): <class ‘str’>
type(translate_table): <class ‘dict’>)
msg: Today is a good day.
secret: 大家自己打印一下吧,博客上显示有问题。
secret: 大家自己打印一下吧,博客上显示有问题。
decode_secret: Today is a good day.

删除字符

source = ""
output = ""
delete_chars = "aeiou"
translation_table = str.maketrans(source, output, delete_chars)
msg = "Hello, World!"
secret = msg.translate(translation_table)
print(secret)  # 输出: Hll, Wrld!
# 删除了所有元音字母 'a', 'e', 'i', 'o', 'u'。

感谢浏览,一起学习!


http://www.kler.cn/a/519236.html

相关文章:

  • hadoop==docker desktop搭建hadoop
  • C语言复习
  • Android Studio:视图绑定的岁月变迁(2/100)
  • Spring Data JPA 实战:构建高性能数据访问层
  • Linux_线程控制
  • Python Pandas数据清洗与处理
  • 什么是业务对象
  • C++练习 —— 命名空间、引用、类的定义、构造函数和析构函数、运算符重载、const成员函数、类相关OJ题
  • 2024:人工智能大模型的璀璨年代
  • 在 ASP.NET Core 6.0 Web API 中将 Excel 文件数据上传并保存到数据库中
  • 数据结构初阶之栈的介绍与栈的实现
  • C语言程序设计十大排序—希尔排序
  • 代码随想录-训练营-day14
  • 设计模式Python版 工厂方法模式
  • 【C语言】字符函数与字符串函数
  • 探寻 UTF - 8 和 GBK 的编码 “黑匣子”
  • 关注搜索引擎蜘蛛压力
  • vim 中粘贴内容时提示: -- (insert) VISUAL --
  • 【YOLOv11改进- 主干网络】YOLOv11+MobileNetV2(2018): 相比于 MobileNetV1 而言准确率更高,模型更小;
  • 【Linux】列出所有连接的 WiFi 网络的密码
  • 《Kotlin核心编程》下篇
  • 安装环境pytorch
  • centos7 配置国内镜像源安装 docker
  • 【分布式日志篇】从工具选型到实战部署:全面解析日志采集与管理路径
  • 使用 Pipeline 提高 Redis 批量操作性能
  • Java 反射机制:春招面试中的关键知识点