Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >新Python项目:替换式密码

新Python项目:替换式密码

作者头像
嘉嘉123
发布于 2022-12-14 11:58:28
发布于 2022-12-14 11:58:28
59500
代码可运行
举报
文章被收录于专栏:嘉嘉的博客嘉嘉的博客
运行总次数:0
代码可运行

2022 Update:**警示后人:不查自带函数的后果很严重! **额…发现可以把文字转码后+1/-1来实现

最近我才学定义函数,写了一个替换式密码小程序

1.替换式密码.py

这个程序是可以被调用的,一共有两个函数,分别是jiami"(加密)jiemi(解密)。jiami调用时传入两个参数,第一个是明文,第二个是移位值,传回密文。jiemi调用时也传入两个参数,第一个是密文,第二个是移位值,传回明文。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 文件名:替换式密码.py
# 包括两个函数

def jiami(ming, yi):
    mi = ""
    ming_old_list = list(ming)
    ming = ""
    for y in range(0, yi):
        for i in ming_old_list:
            if i == "a":
                mi += "b"
            elif i == "A":
                mi += "B"

            elif i == "b":
                mi += "c"
            elif i == "B":
                mi += "C"

            elif i == "c":
                mi += "d"
            elif i == "C":
                mi += "D"

            elif i == "d":
                mi += "e"
            elif i == "D":
                mi += "E"

            elif i == "e":
                mi += "f"
            elif i == "E":
                mi += "F"

            elif i == "f":
                mi += "g"
            elif i == "F":
                mi += "G"

            elif i == "g":
                mi += "h"
            elif i == "G":
                mi += "H"

            elif i == "h":
                mi += "i"
            elif i == "H":
                mi += "I"

            elif i == "i":
                mi += "j"
            elif i == "I":
                mi += "J"

            elif i == "j":
                mi += "k"
            elif i == "J":
                mi += "K"

            elif i == "k":
                mi += "l"
            elif i == "K":
                mi += "L"

            elif i == "l":
                mi += "m"
            elif i == "L":
                mi += "M"

            elif i == "m":
                mi += "n"
            elif i == "M":
                mi += "N"

            elif i == "n":
                mi += "o"
            elif i == "N":
                mi += "O"

            elif i == "o":
                mi += "p"
            elif i == "O":
                mi += "P"

            elif i == "p":
                mi += "q"
            elif i == "P":
                mi += "Q"

            elif i == "q":
                mi += "r"
            elif i == "Q":
                mi += "R"

            elif i == "r":
                mi += "s"
            elif i == "R":
                mi += "S"

            elif i == "s":
                mi += "t"
            elif i == "S":
                mi += "T"

            elif i == "t":
                mi += "u"
            elif i == "T":
                mi += "U"

            elif i == "u":
                mi += "v"
            elif i == "U":
                mi += "V"

            elif i == "v":
                mi += "w"
            elif i == "V":
                mi += "W"

            elif i == "w":
                mi += "x"
            elif i == "W":
                mi += "X"

            elif i == "x":
                mi += "y"
            elif i == "X":
                mi += "Y"

            elif i == "y":
                mi += "z"
            elif i == "Y":
                mi += "Z"

            elif i == "z":
                mi += "a"
            elif i == "Z":
                mi += "A"

            else:
                mi += i
        ming_old_list = list(mi)
        mi_str = mi
        mi = ""
    return mi_str


def jiemi(mi, yi):
    ming = ""
    mi_old_list = list(mi)
    mi = ""
    for y in range(0, yi):
        for i in mi_old_list:
            if i == "a":
                ming += "z"
            elif i == "A":
                ming += "Z"

            elif i == "b":
                ming += "a"
            elif i == "B":
                ming += "A"

            elif i == "c":
                ming += "b"
            elif i == "C":
                ming += "B"

            elif i == "d":
                ming += "c"
            elif i == "D":
                ming += "C"

            elif i == "e":
                ming += "d"
            elif i == "E":
                ming += "D"

            elif i == "f":
                ming += "e"
            elif i == "F":
                ming += "E"

            elif i == "g":
                ming += "f"
            elif i == "G":
                ming += "F"

            elif i == "h":
                ming += "g"
            elif i == "H":
                ming += "G"

            elif i == "i":
                ming += "h"
            elif i == "I":
                ming += "H"

            elif i == "j":
                ming += "i"
            elif i == "J":
                ming += "I"

            elif i == "k":
                ming += "j"
            elif i == "K":
                ming += "J"

            elif i == "l":
                ming += "k"
            elif i == "L":
                ming += "K"

            elif i == "m":
                ming += "l"
            elif i == "M":
                ming += "L"

            elif i == "n":
                ming += "m"
            elif i == "N":
                ming += "M"

            elif i == "o":
                ming += "n"
            elif i == "O":
                ming += "N"

            elif i == "p":
                ming += "o"
            elif i == "P":
                ming += "O"

            elif i == "q":
                ming += "p"
            elif i == "Q":
                ming += "P"

            elif i == "r":
                ming += "q"
            elif i == "R":
                ming += "Q"

            elif i == "s":
                ming += "r"
            elif i == "S":
                ming += "R"

            elif i == "t":
                ming += "s"
            elif i == "T":
                ming += "S"

            elif i == "u":
                ming += "t"
            elif i == "U":
                ming += "T"

            elif i == "v":
                ming += "u"
            elif i == "V":
                ming += "U"

            elif i == "w":
                ming += "v"
            elif i == "W":
                ming += "V"

            elif i == "x":
                ming += "w"
            elif i == "X":
                ming += "W"

            elif i == "y":
                ming += "x"
            elif i == "Y":
                ming += "X"

            elif i == "z":
                ming += "y"
            elif i == "Z":
                ming += "Y"

            else:
                ming += i
        mi_old_list = list(ming)
        ming_str = ming
        ming = ""
    return ming_str

2.文本替换式加解密.py

这个Python程序可以引导你加/解密

代码来喽!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 依赖替换式密码
# 文件名:文本替换式加解密.py

import 替换式密码

while True:
    print("欢迎使用文本加解密APP!")
    print("(1)加密 (2)解密  输入其他内容退出")
    m = input("请输入:")
    if m == "1":
        ming = input("请输入明文:")
        while True:
            try:
                yi = int(input("请输入移位值:"))
            except ValueError:
                print("请输入数字!")
            else:
                break
        print("密文为:%s\\n" % (替换式密码.jiami(ming, yi)))

    elif m == "2":
        mi = input("请输入密文:")
        while True:
            try:
                yi = int(input("请输入移位值:"))
            except ValueError:
                print("请输入数字!")
            else:
                break
        print("明文为:%s\\n" % (替换式密码.jiemi(mi, yi)))

    else:
        break
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
$文本串加密和解密程序
1.1 实验目的 掌握串的应用算法设计。 1.2实验内容 一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为: a b c d e f g h i j k l m n o p q r s t u v w x y z n g z q t c o b m u h e l k p d a w x f y I v r s j 则字符串“encrypt”被加密为“tkzwsdf”。编写一个程序exp4-4.cpp,将输入的文本串加密后输出,然后进行解密并输出。
未名编程
2024/10/12
830
CTF必会-古典密码与常见编码大全(全网最全)
本文属于OneTS安全团队成员flatcc的原创文章,转载请声明出处!本文章仅用于学习交流使用,因利用此文信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,OneTS安全团队及文章作者不为此承担任何责任。
OneTS安全团队
2025/02/07
6660
CTF必会-古典密码与常见编码大全(全网最全)
常见密码和编码总结 CTF中Crypto和Misc必备
可以分作三部分组成 第一部分是:ASCII非打印控制字符 第二部分是:ASCII打印字符; 第三部分是:扩展ASCII打印字符
中龙技术
2022/09/30
8.2K0
常见密码和编码总结 CTF中Crypto和Misc必备
密码学原理与实践笔记 - wuuconix's blog
移位密码。和凯撒密码原理类似。只不过移动的key不是3而可以是0~25中的任何值。所以Caesar Cipher是Shift Cipher的一种特例。
wuuconix
2023/03/13
9630
密码学原理与实践笔记 - wuuconix's blog
Python创建培根密码表_实现培根密码解密
python实现解密培根脚本,解密程序好多都是在线的,今天想把解密程序用python写一个离线的,就当学习练习,以下文章供大家参考、学习,如有错误,多多指出,谢谢大家!
张旭博客
2022/12/27
1.4K0
Python创建培根密码表_实现培根密码解密
Python 密码破解指南:15~19
直到一个文明在包括数学、统计学和语言学在内的几个学科中达到足够复杂的学术水平,密码分析才能被发明出来。
ApacheCN_飞龙
2023/10/13
1.6K0
Python 密码破解指南:15~19
简单密码学总结1.0
摩尔斯电码由两种基本信号组成:短促的点信号“·”,读“滴”;保持一定时间的长信号“—”,读“嗒”。间隔时间:滴=1t,嗒=3t,滴嗒间=1t,字符间=3t,单词间=7t。
天钧
2019/07/26
1.8K0
简单密码学总结1.0
密码学实验报告
怎么说呢,我的同学们都在用C,就我在拿python写这东西,这一部分我以前用python完成过,2-1是经典单表替代密码,2-2是经典的凯撒密码,这都是很经典的密码术,前人的智慧,在这次写脚本解决的时候,都可以用暴力解决。
十二惊惶
2024/02/28
1850
【每日一题】问题 1214: 恺撒密码
恺撒生活在充满危险和阴谋的时代. 恺撒面对的最困难的问题是生存. 为了生存, 他决定创造一种密码. 这种密码听起来难以置信, 如果不知道方法, 没有人可以破解. 你是恺撒军队的一个上尉. 你的工作是解密消息并将之提供给将军. 密码很简单. 对明文的每个字母右移5个位置以创建密文 (如字母'A', 密 文是'F'). 有如下对应: 密文 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 明文 V W X Y Z A B C D E F G H I J K L M N O P Q R S T U 只有字母需要移位, 其它字符保持不变, 所有字母均是大写.
编程范 源代码公司
2018/07/24
5460
单表代替密码原理及算法实现
    要了解单表替代密码就得先了解替代密码,在这里我就做一下简单的介绍:       替代是古典密码中用到的最基本的处理技巧之一 。       替代密码是指先建立一个替换表,加密时将需要加密的明文依次通过查表,替换为相应的字符,明文字符被逐个替换后,生成无任何意义的字符串,即密文,替代密码的密钥就是其替换表。       根据密码算法加解密时使用替换表多少的不同,替代密码又可分为单表替代密码和多表替代密码。       单表替代密码的密码算法加解密时使用一个固定的替换表。单表替代密码又可分为一般单表替代
Angel_Kitty
2018/04/09
3.8K0
单表代替密码原理及算法实现
Python实现摩斯密码解密脚本
python实现解密摩斯密码脚本,解密程序好多都是在线的,今天想把解密程序用python写一个离线的,这样即使断网的情况下也能快速解密摩斯密码,并且此字典不仅提供了对字母的解密还加入了特殊字符的字典,以下文章供大家参考、学习,如有错误,多多指出,谢谢大家!
张旭博客
2022/12/27
1.7K0
Python实现摩斯密码解密脚本
[每日一题]恺撒密码(1214)
这是一个关于凯撒的悲伤的故事。。。。。。 题目描述 恺撒生活在充满危险和阴谋的时代. 恺撒面对的最困难的问题是生存. 为了生存, 他决定创造一种密码. 这种密码听起来难以置信, 如果不知道方法, 没有人可以破解. 你是恺撒军队的一个上尉. 你的工作是解密消息并将之提供给将军. 密码很简单. 对明文的每个字母右移5个位置以创建密文 (如字母'A', 密 文是'F'). 有如下对应: 密文 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 明文
编程范 源代码公司
2018/04/18
1.1K0
加密技术发展
比特币是建立在区块链基础上的,区块链的基本技术支撑有三个: 非对称加密 点对点网络技术 HASH现金 其中非对称加密和HASH现金技术的历史发展颇有渊源,最近仔细学习了一下密码学科普知识,总结一下。 历史回溯 虽然加密和解秘是人类诞生以来一直上演的剧目,方法也是形形色色,但到现在为止,可以简单归纳为两个历史阶段: 1976年之前 1976年以前,所有的加密算法,模式是一样的: 甲方选择某一种加密规则,对信息进行加密 乙方使用同一种规则,对信息进行解密 这时候所有的加解密都是在规则上下文章,主要有两大流派,隐
happy123.me
2018/06/04
1.8K0
多表替换加密
Playfair密码依据一个5*5的正方形组成的密码表来编写,密码表里排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待。英语中z使用最少,可以去掉它。
TomatoCool
2023/07/30
4000
多表替换加密
【愚公系列】2021年12月 攻防世界-进阶题-MISC-061(签到题)
文章目录 一、签到题 二、答题步骤 1.Base64解码 2.凯撒密码 3.栅栏密码 总结 一、签到题 题目链接:https://adworld.xctf.org.cn/task/task_list?
愚公搬代码
2021/12/05
7480
【愚公系列】2021年12月 攻防世界-进阶题-MISC-061(签到题)
维吉尼亚密码及程序实现
凯撒加密 在密码学中,恺撒密码是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。恺撒密码通常被作为其他更复杂的加密方法中的一个步骤。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,凯撒密码的密度是很低的,只需简单地统计字频就可以破译。 凯
三丰SanFeng
2018/01/16
2K0
维吉尼亚密码及程序实现
10:简单密码
10:简单密码 总时间限制: 1000ms 内存限制: 65536kB描述 Julius Caesar曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。比如字符A用F来代替。如下是密文和明文中字符的对应关系。 密文 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 明文 V W X Y Z A B C D E F G H I J K L M N O P Q R S T U  你的任务是对给
attack
2018/04/03
8080
用 shell 脚本批量生成强密码
        这个命令组合主要用于生成一个随机的、包含可打印字符(不包括空格)的字符串列表,每个字符串长度为16个字符,总共生成100个这样的字符串。下面是对命令各部分的详细解析:
用户1148526
2024/08/08
1320
加密算法实例:替换密码
软件架构师Michael
2025/02/11
1280
Jarvis OJ平台basic部分writeup
题目 Base64? 关于USS Lab Veryeasy 段子 手贱 美丽的实验室logo veryeasyRSA 神秘的文件 公倍数 Secret 爱吃培根的出题人 Easy RSA 取证 熟悉的
安恒网络空间安全讲武堂
2018/02/06
1.6K0
Jarvis OJ平台basic部分writeup
相关推荐
$文本串加密和解密程序
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验