利用python实现仿射密码以及穷举爆破

仿射密码 语言:python3 实验目的: 通过编程实现代换密码算法——仿射密码和简单置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。 实验内容: 根据仿射密码的实现原理,实现利用仿射密码进行加密和解密的程序。 (1)设计加密程序:能够根据用户输入明文的内容产生加密的密文并输出 (2)设计解密程序:能够对输入的密文内容破解并输出得到其对应的明文。 # -*- coding: UTF-8 -*- import math """ 仿射密码加密解密模块 @author WQ @. 阅读详情
dic = {1: 1, 3: 9, 5: 21, 7: 15, 9: 3, 11: 19, 15: 7, 17: 23, 19: 11, 21: 5, 23: 17, 25: 25}  # 模逆
table_encypt = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5,
                'g': 6, 'h': 7, 'i': 8, 'j': 9, 'k': 10, 'l': 11, 'm': 12,
                'n': 13, 'o': 14, 'p': 15, 'q': 16, 'r': 17, 's': 18, 't': 19,
                'u': 20, 'v': 21, 'w': 22, 'x': 23, 'y': 24, 'z': 25}
table_decypt = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g',
                7: 'h', 8: 'i', 9: 'j', 10: 'k', 11: 'l', 12: 'm', 13: 'n', 14: 'o', 15: 'p', 16: 'q', 17: 'r',
                18: 's', 19: 't', 20: 'u', 21: 'v', 22: 'w', 23: 'x', 24: 'y', 25: 'z'}




# 加密
def encrypt(clear_content, key_a, key_b):
result = ""
for i in clear_content:
result += table_decypt.get((key_a * (table_encypt.get(i)) + key_b) % 26)
return result




# 解密
def decrypt(cipher, key_a, key_b):
result = ""
for i in cipher:
result += table_decypt.get((dic.get(key_a) * table_encypt.get(i) - (dic.get(key_a) * key_b) % 26) % 26)
return result




# 穷举
def blasting(cipher):
lis = []
result = ""
for i in dic.keys():
for j in range(0, 26):
for s in cipher:
result += table_decypt.get((dic.get(i) * table_encypt.get(s) - (dic.get(i) * j) % 26) % 26)
lis.append(result)
result = ""
return lis


def filter_claer(clear):
result = ""
clear = clear.lower()
for i in clear:
if 97 <= ord(i) <= 122:
result += i
return result
if __name__ == '__main__':
prompt = """选择
(e)加密
(d)解密
(c)爆破
(q)退出
请输入你的选择: 
"""
while True:
choice = input(prompt)
if choice == 'e':
clear = filter_claer(input("请输入明文:"))
key = input("请输入加密秘钥:a和b,以空格间隔").split(" ")
print("密文为: %s" % (encrypt(clear, int(key[0]), int(key[1]))))
elif choice == 'd':
cipher= input("请输入密文: ")
key = input("请输入加密秘钥:a和b,以空格间隔").split(" ")
print("明文为: %s" % decrypt(cipher, int(key[0]), int(key[1])))
elif choice == 'q':
break
elif choice == 'c':
cipher = input("请输入密文: ")
plain=blasting(cipher)
print(plain)

仿射密码破解——再别康桥 这里有用仿射加密的一段诗歌密文(空格标点等没有加密),请尝试还原为明文并翻译为中文 Ptfxgj Jnno-afv wn Htzaixojv Tjtxg Af Yd Mqxzn Kvif bdxvwsf X wtlv zf svtkv Tp bdxvwsf tp X htzv qviv; Bdxvwsf X rtkv jnno-afv Wn wqv inpf hsndop xg wqv rvp... 阅读详情

相关推荐

仿射密码地暴力破解/C++

26个字母加上空格,逗号,句号的字符串的解密,用c++编写

(python)爆破函数解仿射加密

对于仿射加密的爆破攻击,可以使用暴力破解方法来尝试解密。仿射加密是一种线性替换密码,它通过使用一个线性变换和一个移位来对明文进行加密。攻击者可以通过穷举法尝试所有可能的密钥组合,直到找到正确的解密密钥。

MARST.ZHANG的博客 1061

仿射密码解密

给出密文,统计得到出现频率最大的两个字母,确定密钥。

python加解密之仿射密码(无密钥暴力破解)

仿射密码在不知道密钥的情况下只有312种可能,很方便我们进行遍历,下面粘贴上写好的代码。

BLS1314的博客 843

仿射密码解密工具

是仿射密码的解密工具,可以解仿射密码;

fangshe.rar_rsa_仿射密码解密_字母频率仿射

java实现仿射密码的加解密以及统计各字母出现的频率并分析

仿射密码原理及例

简单介绍放射密码并通过例题体现

H1zerguo的博客 3400

关于42步进电机驱动——基于STM32 HAL库实现

我找了好多资料,好多关于42步进电机的都是文档,这么文档都需要积分,需要积分就算了内容还非常差,浪费时间和电脑的内存。关于大部分是基于Arduino和51去驱动的 42步进电机驱动硬件如下: 首先你要了解步进电机的驱动原理,我也不啰嗦了,请看这边博客: 二相四线,四相五线,四相六线步进电机接线及驱动方法 , 看完这篇你就知道驱动和接线的原理了。 起初我也为如何接线烦恼,因为有些博客在讲述这些问题的时候没有讲的很透彻。 方法如下: ①用万用表调到欧姆档,用其中一个表笔搭在一个引脚上,依次测其它.

Jodan132的博客 1万+

仿射密码实验——Python实现(完整解析版)

文章目录前言实验内容实验操作步骤1.编写主程序2.编写加密模块3.编写解密模块4.编写文件加解密模块实验结果实验心得 前言 实验目的 1)初步了解古典密码 2)掌握仿射密码的实现 实验方法 根据下图仿射密码(变换)加解密的描述,用所熟悉的语言,完成实验内容、描述实验操作步骤、实验结果与实验心得。 实验环境 计算机语言:Python 开发环境:Pycharm 原理 实验内容 编程实现仿射密码,要求有加密步骤和解密步骤。若输入参数a,b不合法,则报错。 提供两种解密方法,一是掌握密钥破解,而是无密钥的暴

有时候,想要一块二向箔 1万+

innovus 命令每日精要 | 掌控Innovus布线的利器——setNanoRouteMode详解

在数字IC后端设计的复杂世界里,布线优化是至关重要的一步。今天,我来给大家深入讲解Innovus工具中setNanoRouteMode命令的精妙之处,让你轻松驾驭布线策略,提升设计质量。setNanoRouteMode是Innovus中用于配置NanoRoute绕线行为的关键命令。通过其丰富的参数,你可以精细控制布局后阶段的绕线策略、信号完整性优化、工艺适配及设计规则修复等流程。下面,我将按功能分类总结其核心选项,并针对不同场景给出建议。

weixin_50820814的博客 3528

用Multisim和AD2复刻经典:手把手教你搭建μA741三角波-方波发生器(附完整避坑指南)

本文详细介绍了如何使用Multisim和AD2搭建基于μA741运算放大器的三角波-方波发生器,包括电路原理、Multisim仿真流程、AD2硬件搭建及调试技巧。通过对比理论计算、仿真和实测数据,深入分析器件非理想特性的影响,并提供16个典型问题的解决方案,帮助读者掌握波形发生器的设计原理和工程调试经验。

weixin_28744423的博客 284

仿射密码-简单易懂

记录自己的学习过程

Am_yz的博客 2928

CircuitBreaker Resilience4J 介绍

在分布式环境中,我们的应用可能会面临着各种各样的可恢复的异常(比如超时,网络环境异常),此时我们可以利用不断重试的方式来从异常中恢复(Retry Pattern),使整个集群正常运行。然而,也有一些异常比较顽固,突然发生,无法预测,而且很难恢复,并且还会导致级联失败(举个例子,假设一个服务集群的负载非常高,如果这时候集群的一部分挂掉了,还占了很大一部分资源,整个集群都有可能遭殃)。如果我们这时还是不断进行重试的话,结果大多都是失败的。

zzhongcy的专栏 3540

大数据安全 | 【实验】仿射加密

仿射加密是一种基于数学运算的密码算法,它将明文中的每个字符通过一个线性变换映射到密文中的对应字符。该线性变换由两个参数alpha和beta决定。

知识库搭建ing 1230

低代码Agent开发框架使用指南(二)—Coze平台核心功能概览

本篇分享系统介绍了字节跳动推出的低代码智能体开发平台Coze。Coze以免费易用、多模型支持和便捷的跨平台发布为核心优势,显著降低了智能体开发门槛。文章详细解析了平台的六大核心功能:扩展能力边界的插件系统、增强认知的知识库、结构化数据管理的数据库、可视化图像处理的图像流、实现复杂逻辑编排的工作流,以及处理复杂任务的多智能体协作机制,全面展现了Coze平台的强大能力。

weixin_42782643的博客 1358

Zoom AI 技术架构研究:联合式方法与多模态集成

通过 Zoom AI 开放平台,企业可以自定义 AI 模块 (如法律合规审查、客户反馈分析),扩展应用场景。这种开放平台策略使企业能够根据自身需求定制 AI 功能,满足特定业务需求。

shao.bing的专栏 1317

信息安全管理——仿射密码破解

任务 这里有用仿射加密的一段密文(空格标点等没有加密),请尝试还原为明文并翻译为中文,最好能通过计算把密钥算出来,当然写个程序暴力破解也可以,破解出来就行。 Izf, gkzxtk, gkvg rlvuzf pdlil bp gkl cbypg gkbit gkvg dzrlp mvdj gz rl. Gkl prlaa zc gkl tyvpp, gkl cvbig dkbaa zc gkl fbiu, gkl abil zc gkl kbaap, gkl mvyjbit zc v uzt: gklpl

TTTSEP9TH2244的博客 6713

芯片研发完整全流程

芯片研发全流程可分为需求与架构设计、前端逻辑设计、后端物理设计、晶圆制造、封装测试五大阶段,涉及16个核心步骤。研发过程需要多学科交叉协作,包括微电子、物理、材料、计算机等。关键注意事项包括验证优先、工艺约束遵循、可测性设计等。芯片设计需要绘制纳米级精度的物理版图,而非传统工程图纸,需使用专业EDA工具而非KiCad这类PCB设计软件。完整研发流程具有高投入、高风险特点,需严格遵循行业标准和规范。

weixin_44520581的博客 228

密码学课设-仿射密码的攻击

攻略实验描述实验分析编程实现py3 实现c++ 实现 实验描述 问题描述 仿射密码系统用五元组(P,C,K,E,D)表示,设 P = C = { 计算机学院网络工程信息安全,我们热爱中华人民共和国。大家 } 。 现在截获了一段密文 “和院程安我爱计” 。 请编程分析出明文。 基本要求 程序要求界面友好,自动分析程度高,能输出加密所用的密钥和明文。 实现提示 申请三个字符数组 Z,C,M 。 Z = { 计算机学院网络工程信息安全,我们热爱中华人民共和国。大家 } , C = “和院程安我爱计”,

Majula 1568

ruoyi-nbcio-plus基于vue3的flowable服务任务的升级修改

ruoyi-nbcio-plus基于vue3的flowable服务任务的升级修改

宁波阿成的博客 847

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

信息安全--仿射密码

说明: 加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是:C=Ek(m)=(k1m+k2) mod n;M= Dk(c)=k3(c- k2) mod n(其中(k3 ×k1)mod26 = 1); 仿射密码具有可逆性的条件是:gcd(k1, n)=1. 当k1=1时,仿射密码变为加法密码,当k2=0时,仿射密码变为乘法密码。仿射密码中的密钥空间的大小为nφ(n),当n为26...

weixin_34023863的博客 958

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

streamin

import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader;

DevilsApple的专栏 1085

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

web渗透[穷举篇]

当客户端访问受保护资源时,将Token放入请求中发给服务器,服务器接受到请求后,会验证Token的有效性和权限,如果Token有效且权限允许,服务器会响应请求并提供所需的资源。1.在NAT模式下,虚拟机的IP地址对外部网络不可见,要通过修改虚拟机的网络里的的DNS服务器地址,可以将DNS请求转发给与主机网络连接的虚拟机,从而实现对虚拟机域名的解析。因此,只需要修改本机所连接的网络(如WLAN)的DNS服务器地址,就可以让物理机通过该网络直接访问虚拟机上的网站。但是如果我们发送的请求把session删了。

npc88888的博客 1806

Linux下hydra的使用

Syntax:  hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] Parameter: -R 继续从上一次进度接着破解 -S 大写,采

Tobiubiu 2181

仿射密码的硬破解

硬破解仿射密码 目录 硬破解仿射密码 目录 仿射密码加解密公式 需要破解的原文 破解的算法分析 C语言代码 python代码 效果展示 原文 仿射密码加解密公式 需要破解的原文 Ptfxgj Jnno-afv wn Htzaixojv Tjtxg Af Yd Mqxzn Kvif bdxvwsf X wtlv zf svtkv Tp bdxvwsf tp ...

不知博者的博客 4013
上一篇: python实现维吉尼亚加密解密以及利用拟重合指数法爆破
下一篇: 利用python实现AES三种模式ECB,CBC, OFB 加解密
RememberMePlease
博客等级 码龄9年 10粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值