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练手----字符串的密钥加密相关推荐

  1. Python毕设-【人脸签到系统】附源码/Python练手项目/Python毕业设计

    本人承诺只做技术分享,永不收费. V----------------->:专栏详情 文章目录 本人承诺只做技术分享,永不收费. V----------------->:专栏详情 一.背景 ...

  2. python练手项目:2048实现与总结

    python练手项目:利用curses界面对2048的实现与总结 涉及的知识点 基本实现 UI展示 curses的初始化方法:wrapper curses的屏幕展示语句:addscr curses正式 ...

  3. 70个Python练手项目列表 预祝大家 快乐

    小孩眺望远方,成人怀念故乡. 为此给大家分享一下珍藏的Python实战项目,祝大家节日快乐哦!!! Python 前言:不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说 ...

  4. python小程序源代码-整理了适合新手的20个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...

  5. python小程序-【Python精华】100个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...

  6. python经典案例-20个Python练手经典案例,能全做对的人确实很少!

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 如果你感觉学不会?莫慌,小编推荐大家加入群, 前面548中间3 ...

  7. python小程序-整理了适合新手的20个Python练手小程序

    即刻关注公众号,发现世界的美好 100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3 ...

  8. python练手经典100例微盘_20个Python练手经典案例,能全做对的人确实很少!

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 如果你感觉学不会?莫慌,小编推荐大家加入群, 前面548中间3 ...

  9. python练手经典100例-20个Python练手经典案例,能全做对的人确实很少!

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 私信小编007即可自动获取Python学习教程,包含视频教程以 ...

最新文章

  1. 提前半年博士毕业,一作发顶刊论文11篇,这位“科研学霸”的秘诀是?
  2. linux c 查看 结构体 宏 函数 关键字定义
  3. 机器学习基础知识之矩阵
  4. Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理--转载
  5. c#读取Sybase中文乱码的解决办法
  6. sonarqube7.8汉化教程:安装中文插件
  7. 关于raid5 5e 5ee的性能 对比及其数据恢复原理
  8. 哲学家就餐问题(如何避免死锁)(多线程版)
  9. LeetCode LCP 11. 期望个数统计
  10. 图片md5修改工具_如何修改视频和图片的MD5,用电脑自带的命令
  11. HTML 基础语言
  12. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·005【表的CRUD操作(DML语句)】
  13. 新上手jupyterlab安装及问题解决
  14. React使用create-react-app 创建项目失败,解决方法
  15. 七年为限 一觉梦已远——我与你的新贵族
  16. 【易语言界面开发系列教程之(EX_UI使用系列教程(12)--EX组件(列表框EX))】
  17. iPhone5翻新机卡贴机,妖机真实信息获取方法
  18. Android开发总结:个人开发者如何通过广告平台赚钱
  19. redis配置(2)
  20. 数字货币 2018年市值排行榜前100币种简介

热门文章

  1. UnityStandardAsset工程、源码分析_5_赛车游戏[AI控制]_AI机制
  2. 别忽略国美之争的真正遗产
  3. TP- LINK企业级vp-n路由器ipsec场景与实施(野蛮模式)
  4. 发人深省 可惜你们忘了他
  5. PP模块工艺路线明细BAPI
  6. 十大WIFI提速技巧
  7. 利用Python预测股票价格
  8. Soft-Clipping Mish激活函数
  9. 你见过最心酸的事是什么?
  10. 怎么把avi转换成mp4?