Python练手----字符串的密钥加密
Python练手----字符串的密钥加密
最近各种笔试加上leetcode刷题遇到很多加密题目,这些题目大同小异都是给出一个原始字符串和一个密钥。通过密钥和26个英文字母的对应关系对原文字符串进行加密。
例如:原字符串为“hello”,密钥为“2345678”,加密方式为:对字符串中的每一个字符,按照字母表依次采用密钥中的数字往前或者往后遍历若干个字母,其中偶数位上的字符往前遍历,奇数位上的字符往后遍历。
以上边给出的原字符串和密钥为例。第0个字符为h,对应密钥中数字为2,0认为是偶数位,那么按照字母表顺序从h往前遍历2个字母,得到新字母f;第1个字符为e,对应密钥中的数字为3,1为奇数位,那么按照字母表顺序往后遍历3个字母,得到新字符h。依次类推,加密后的密文为:“fhhqi”
接下来是代码实现。我的思路是首先将每一位上的字母转化为对应的ASCII码,然后对ASCII码进行加减值的操作,最后再转化回来。还有其他很多更好的方法,有很多大佬博主写的很好,这里就不再赘述了。以下是代码部分。
"""
函数解释:
Encryption()函数为加密算法的实现过程
ini_str为带加密的原文
key为加密所使用的密钥
加密规则为:
偶数位数上的按照密钥的数字按照字母表顺序往前移动,奇数位数上的按照密钥的数字按照字母表顺序往后移动
"""
def Encryption(ini_str,key):len_key = len(key) # 记录密钥长度len_str = len(ini_str) # 记录原文长度fin_res = [] # 记录加密后的密文字符for i in range(len_str):ini_loc = ord(ini_str[i]) # 将字母转化为对应的ASCII码k_value = int(key[i%len_key]) # 计算其在密钥中对应的值if i%2==0:new_loc = (ini_loc-97-k_value)%26+97 # 计算加密后字符对应的ASCII码fin_res.append(chr(new_loc)) # 转化为字符串后加入数组else:new_loc = (ini_loc - 97 + k_value) % 26 + 97fin_res.append(chr(new_loc))fin_res = ''.join(fin_res) # 将列表转化为字符串return fin_res
if __name__=='__main__':init_str = input("Please input the text: ")key = input("Please input the key: ")res = Encryption(init_str,key)print(res)
运行结果:
Python练手----字符串的密钥加密相关推荐
- Python毕设-【人脸签到系统】附源码/Python练手项目/Python毕业设计
本人承诺只做技术分享,永不收费. V----------------->:专栏详情 文章目录 本人承诺只做技术分享,永不收费. V----------------->:专栏详情 一.背景 ...
- python练手项目:2048实现与总结
python练手项目:利用curses界面对2048的实现与总结 涉及的知识点 基本实现 UI展示 curses的初始化方法:wrapper curses的屏幕展示语句:addscr curses正式 ...
- 70个Python练手项目列表 预祝大家 快乐
小孩眺望远方,成人怀念故乡. 为此给大家分享一下珍藏的Python实战项目,祝大家节日快乐哦!!! Python 前言:不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说 ...
- python小程序源代码-整理了适合新手的20个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...
- python小程序-【Python精华】100个Python练手小程序
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...
- python经典案例-20个Python练手经典案例,能全做对的人确实很少!
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 如果你感觉学不会?莫慌,小编推荐大家加入群, 前面548中间3 ...
- python小程序-整理了适合新手的20个Python练手小程序
即刻关注公众号,发现世界的美好 100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3 ...
- python练手经典100例微盘_20个Python练手经典案例,能全做对的人确实很少!
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 如果你感觉学不会?莫慌,小编推荐大家加入群, 前面548中间3 ...
- python练手经典100例-20个Python练手经典案例,能全做对的人确实很少!
100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 私信小编007即可自动获取Python学习教程,包含视频教程以 ...
最新文章
- 提前半年博士毕业,一作发顶刊论文11篇,这位“科研学霸”的秘诀是?
- linux c 查看 结构体 宏 函数 关键字定义
- 机器学习基础知识之矩阵
- Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理--转载
- c#读取Sybase中文乱码的解决办法
- sonarqube7.8汉化教程:安装中文插件
- 关于raid5 5e 5ee的性能 对比及其数据恢复原理
- 哲学家就餐问题(如何避免死锁)(多线程版)
- LeetCode LCP 11. 期望个数统计
- 图片md5修改工具_如何修改视频和图片的MD5,用电脑自带的命令
- HTML 基础语言
- 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·005【表的CRUD操作(DML语句)】
- 新上手jupyterlab安装及问题解决
- React使用create-react-app 创建项目失败,解决方法
- 七年为限 一觉梦已远——我与你的新贵族
- 【易语言界面开发系列教程之(EX_UI使用系列教程(12)--EX组件(列表框EX))】
- iPhone5翻新机卡贴机,妖机真实信息获取方法
- Android开发总结:个人开发者如何通过广告平台赚钱
- redis配置(2)
- 数字货币 2018年市值排行榜前100币种简介