ROT家族

ROT5加解密算法

加密方法:

  1. 将数字字符转换为整数
  2. 将整数加5,对10取模,得到加密后的整数
  3. 将加密后的整数转换为数字字符

解密方法:

  1. 将数字字符转换为整数
  2. 将整数减去5,若结果小于0,则加上10
  3. 将解密后的整数转换为数字字符

加解密脚本

def rot5_encrypt(plaintext):ciphertext = ""for c in plaintext:if c.isdigit():new_digit = (int(c) + 5) % 10ciphertext += str(new_digit)else:ciphertext += creturn ciphertextdef rot5_decrypt(ciphertext):plaintext = ""for c in ciphertext:if c.isdigit():new_digit = (int(c) - 5) % 10plaintext += str(new_digit)else:plaintext += creturn plaintext

ROT13加解密算法

加密过程:

  1. 首先,将明文中的每个字母替换成它在字母表中顺序排列的第13个字母。例如,明文中的字母A将替换为N,字母B将替换为O,以此类推。
  2. 如果字母表中的字母已经到了Z,则继续从字母表的开头(即字母A)开始计数。
  3. 对于非字母字符(例如数字、标点符号和空格),不进行加密,直接保留原样。
  4. 最终输出加密后的密文。

解密过程:

  1. 将密文中的每个字母替换为它在字母表中顺序排列的前13个字母,即将字母N替换为A,字母O替换为B,以此类推。
  2. 如果字母表中的字母已经到了A,则继续从字母表的末尾(即字母Z)开始计数。
  3. 对于非字母字符,不进行解密,直接保留原样。
  4. 最终输出解密后的明文。

加解密脚本

def rot13_encrypt(plaintext: str) -> str:ciphertext = ""for c in plaintext:if c.isalpha():if c.isupper():new_ascii = (ord(c) - 65 + 13) % 26 + 65else:new_ascii = (ord(c) - 97 + 13) % 26 + 97ciphertext += chr(new_ascii)else:ciphertext += creturn ciphertextdef rot13_decrypt(ciphertext: str) -> str:plaintext = ""for c in ciphertext:if c.isalpha():if c.isupper():new_ascii = (ord(c) - 65 - 13) % 26 + 65else:new_ascii = (ord(c) - 97 - 13) % 26 + 97plaintext += chr(new_ascii)else:plaintext += creturn plaintext

ROT18加解密算法

加密过程:

  1. 首先,将明文中的每个字母替换成它在字母表中顺序排列的第18个字母。例如,明文中的字母A将替换为S,字母B将替换为T,以此类推。
  2. 如果字母表中的字母已经到了Z,则继续从字母表的开头(即字母A)开始计数。
  3. 对于非字母字符(例如数字、标点符号和空格),不进行加密,直接保留原样。
  4. 最终输出加密后的密文。

解密过程:

  1. 将密文中的每个字母替换为它在字母表中顺序排列的前18个字母,即将字母S替换为A,字母T替换为B,以此类推。
  2. 如果字母表中的字母已经到了A,则继续从字母表的末尾(即字母Z)开始计数。
  3. 对于非字母字符,不进行解密,直接保留原样。
  4. 最终输出解密后的明文。

加解密脚本

def rot18_encrypt(plaintext: str) -> str:ciphertext = ""for c in plaintext:if c.isalpha():if c.isupper():new_ascii = (ord(c) - 65 + 18) % 26 + 65else:new_ascii = (ord(c) - 97 + 18) % 26 + 97ciphertext += chr(new_ascii)else:ciphertext += creturn rot5_encrypt(rot13_encrypt(plaintext))def rot18_decrypt(ciphertext: str) -> str:plaintext = ""for c in ciphertext:if c.isalpha():if c.isupper():new_ascii = (ord(c) - 65 - 18) % 26 + 65else:new_ascii = (ord(c) - 97 - 18) % 26 + 97plaintext += chr(new_ascii)else:plaintext += creturn rot5_decrypt(rot13_decrypt(ciphertext))

ROT47加解密算法

加密过程:

  1. 首先,将明文中的每个字符转换为其对应的ASCII码值。
  2. 对于每个可打印字符,将其ASCII码值加上47。
  3. 如果加上47后的ASCII码值超过了126,则从33开始重新计数。
  4. 将加密后的ASCII码值转换回字符形式。
  5. 最终输出加密后的密文。

解密过程:

  1. 首先,将密文中的每个字符转换为其对应的ASCII码值。
  2. 对于每个可打印字符,将其ASCII码值减去47。
  3. 如果减去47后的ASCII码值小于33,则从126开始重新计数。
  4. 将解密后的ASCII码值转换回字符形式。
  5. 最终输出解密后的明文。

加解密脚本

def rot47_encrypt(plaintext: str) -> str:ciphertext = ""for c in plaintext:if 33 <= ord(c) <= 126:ciphertext += chr((ord(c) - 33 + 47) % 94 + 33)else:ciphertext += creturn ciphertextdef rot47_decrypt(ciphertext: str) -> str:plaintext = ""for c in ciphertext:if 33 <= ord(c) <= 126:plaintext += chr((ord(c) - 33 - 47) % 94 + 33)else:plaintext += creturn plaintext

ROT系列密码加解密实现(python)相关推荐

  1. python实现Rot古典密码加解密

    目录 1.ROT加密算法介绍 2.python实现Rot5加密 3.python实现Rot13加解密 4.python实现Rot18解密 5.python实现Rot47加解密

  2. 恺撒密码加解密程序(Python)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.确定恺撒密码原理,用公式表示 二.子函数的确立 1.加密部分 2.解密部分 3.选择加密还是解密 三.确定各个子函 ...

  3. 仿射密码python_仿射密码加解密 python

    参数选取:模数n=26+10=36,k2为学号后2位:k1为与学号后2位最近的素数. 加解密:加密自己名字的全拼,再解密. 密钥 k = (k1 , k2) 仿射密码加解密算法是:    m:是输入的 ...

  4. python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...

    #-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/k ...

  5. yml配置文件的密码加解密

    yml配置文件的密码加解密 1.低版本2.x 1)引入jar包 2)生成密码 3)测下解密 4)yml配置 2.高版本 3.x 1)引入jar包 2)生成密码 3)yml配置 1.低版本2.x 1)引 ...

  6. 密码加解密java语言实现

    目录 前言 1.密码加密的主要方式 2.代码的实现过程 3.整体代码 前言 随着技术的发展,密码加密技术已经越来越普遍越来越多样化,在我们生活中常见的加密算法包括了DES加密算法,AES加密算法,RS ...

  7. weblogic密码加解密

    通常在weblogic的config.xml文件中,对于关键字符串.密码会自动加密,例如数据库JDBC连接池连接密码等.通常加密之后前面会加上{3DES}的标识.3DES就是DES算法的增强,相关资料 ...

  8. 实验吧-密码学-杯酒人生(特殊凯撒--维吉尼亚密码)(凯撒加解密脚本、维吉尼亚密码加解密脚本)...

    题目: 使用古典密码 一喵星人要想喵星发送一段不知道干什么用的密码"BLOCKCIPHERDESIGNPRINCIPLE", 但是它忘记了密钥是什么, 手头(爪头)只有它自己加密过 ...

  9. 唯品会密码JS解密与python模拟登录

    上班都快一周了,一直想更新,奈何小伙还没有从假期的快乐中缓过来,今天终于耐下心来更新一小篇.抠一下某品会的JS代码,接着使用抠取的JS代码加密密码进行登录.友情提示:为避免不必要的纠纷,本文中所有网址 ...

最新文章

  1. jQuery获取Table某列的值
  2. iOS15实现音乐播放器
  3. 使用Envoy代理的微服务模式,第二部分:超时和重试
  4. android旋转屏幕 简册,[Android][旋转屏幕]
  5. VC++中实现INI文件读写的方法和示例
  6. n阶方程求逆c语言,n阶方阵求逆
  7. 字符串,字节,二进制转换
  8. wxpython菜单的位置_wxpython教程:[5]次级菜单
  9. 一维差分(附模板题)
  10. python 批量修改文件名
  11. Jetson Xavier中安装DIGITS-》Caffee中的错误
  12. 大力哥谈 DALI - DT6 和 DT8 是什么鬼?
  13. 保研联系导师邮件模板
  14. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx分解线xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  15. H5新增video标签的常用属性
  16. (25):SPA单页面的理解
  17. 如何倾听客户之声?你需要的不仅仅是调研
  18. TCP/IP之大明邮差
  19. BZOJ2844:albus就是要第一个出场——题解
  20. Linux如何修改系统语言

热门文章

  1. java小恐龙游戏_【分享】 chrome恐龙小游戏 java
  2. MPlayer上支持RTSP流媒体(live555作为流媒体播放器)
  3. 达观数据宣布获得由深创投领投的2.7亿元B+轮融资
  4. 理想与现实的差距肯定是有的
  5. 理解人机智能,倡导“智能向善”
  6. 【vim】撤销和恢复撤销快捷键
  7. Android 使用AlarmManager设置闹钟
  8. 二、蜂鸣器与继电器的基本控制
  9. js判断是否为Chrome/Safari/火狐/360/搜狗浏览器等
  10. 免费sip软电话软件(sip客户端)