Python密码学仿射密码及攻击单字母密码教程
作者:菜鸟教程 发布时间:2021-01-25 05:52:28
标签:Python,密码学,仿射密码,攻击,单字母密码
仿射密码
Affine Cipher是Multiplicative Cipher和Caesar Cipher算法的组合.
仿射密码的基本实现如下图所示 :
我们将通过创建包含两个加密和解密基本函数的相应类来实现仿射密码.
代码
您可以使用以下代码实现仿射密码 :
?class仿射(对象):
?DIE?=?128?
?KEY?=(7,3,55)
?def?__init?__(self):
#传递
?def?encryptChar(self,char):
?K1,K2,?kI?=?self.KEY?
?return?chr((K1?*?ord(char)+?K2)%self.DIE)
?def?encrypt(self,string):
?return""?.join(map(self.encryptChar,string))
?def?decryptChar(self,char):
?K1,K2,KI?=?self.KEY?
?return?chr(KI?*?(ord(char)?-??K2)%self.DIE)
?def?decrypt(self,string):
?return"".join(map(self.decryptChar,string))
?affine?=?Affine()
?print?affine.encrypt('?Affine?Cipher')
?print?affine.decrypt('*?18?FMT')
输出
实现仿射密码时,可以观察到以下输出;
输出显示纯文本消息仿射密码的加密消息和已作为输入 abcdefg发送的消息的解密消息.
单字母密码
接下来,您将学习使用Python的单字母密码及其黑客攻击.
单字母密码使用固定替换用于加密整个消息.这里显示使用带有JSON对象的Python字典的单字母密码 :
monoalpha_cipher?=?{
???'a':?'m',
???'b':?'n',
???'c':?'b',
???'d':?'v',
???'e':?'c',
???'f':?'x',
???'g':?'z',
???'h':?'a',
???'i':?'s',
???'j':?'d',
???'k':?'f',
???'l':?'g',
???'m':?'h',
???'n':?'j',
???'o':?'k',
???'p':?'l',
???'q':?'p',
???'r':?'o',
???'s':?'i',
???'t':?'u',
???'u':?'y',
???'v':?'t',
???'w':?'r',
???'x':?'e',
???'y':?'w',
???'z':?'q',
'?':?'?',
}
借助此词典,我们可以使用相关字母加密字母为JSON对象中的值.
以下程序创建一个单字母程序作为类表示,其中包括加密和解密的所有功能.
from?string?import?letters,?digits
from?random?import?shuffle
def?random_monoalpha_cipher(pool?=?None):
???if?pool?is?None:
??????pool?=?letters?+?digits
???original_pool?=?list(pool)
???shuffled_pool?=?list(pool)
???shuffle(shuffled_pool)
???return?dict(zip(original_pool,?shuffled_pool))
def?inverse_monoalpha_cipher(monoalpha_cipher):
???inverse_monoalpha?=?{}
???for?key,?value?in?monoalpha_cipher.iteritems():
??????inverse_monoalpha[value]?=?key
???return?inverse_monoalpha
def?encrypt_with_monoalpha(message,?monoalpha_cipher):
???encrypted_message?=?[]
???for?letter?in?message:
??????encrypted_message.append(monoalpha_cipher.get(letter,?letter))
???return?''.join(encrypted_message)
def?decrypt_with_monoalpha(encrypted_message,?monoalpha_cipher):
???return?encrypt_with_monoalpha(
??????encrypted_message,
??????inverse_monoalpha_cipher(monoalpha_cipher)
???)
稍后调用此文件以实现Monoalphabetic密码的加密和解密过程,如下所示 :
import?monoalphabeticCipher?as?mc
cipher?=?mc.random_monoalpha_cipher()
print(cipher)
encrypted?=?mc.encrypt_with_monoalpha('Hello?all?you?hackers?out?there!',?cipher)
decrypted?=?mc.decrypt_with_monoalpha('sXGGt?SGG?Nt0?HSrLXFC?t0U?UHXFX!',?cipher)
print(encrypted)
print(decrypted)
输出
当您实现上面给出的代码时,您可以观察到以下输出;
T嗯,你可以用一个指定的键值对来破解单字母密码,这会将密文破解成实际的纯文本.
来源:https://www.it1352.com/OnLineTutorial/cryptography_with_python/cryptography_with_python_affine_cipher.html


猜你喜欢
- 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。本章节我们将为大家介绍如
- 一、分析数据源这里的数据源是指html网页?还是Aajx异步。对于爬虫初学者来说,可能不知道怎么判断,这里辰哥也手把手过一遍。提示:以下操作
- excel转置分为两种情况,一个是较为简单的只需要行转列,列转行最简单的转置,利用pandas里面的转置**.T**函数代码如下:impor
- JavaScript由于同源策略的限制,跨域通信一直是棘手的问题。当然解决方案也有很多: 1.document.domain+iframe的
- 目录前言什么是pip再说 pip, 它就像应用宝下面给我们的手机安装应用宝Centos 安装pip for python2试用pip来安装库
- 一、游戏玩法介绍:24点游戏是儿时玩的主要益智类游戏之一,玩法为:从一副扑克中抽取4张牌,对4张牌使用加减乘除中的任何方法,使计算结果为24
- 传统行业里,缺做互联网资深的人;互联网行业里,缺玩传统业务资深的人。于是会造成很多问题,比如两边难沟通,在传统行业者心目中,网络营销e-Ma
- 一.页面样式二.数据库 三.前端页面代码 <template> <el-tree :props="pr
- fileinput模块可以对一个或多个文件中的内容进行迭代、遍历等操作。该模块的input()函数有点类似文件readlines()方法,区
- 在python中安装了lxml-4.2.1,在使用时发现导入etree时IDE中报错Unresolved reference其实发现,不影响
- 持续更新一些常用的Tensor操作,比如List,Numpy,Tensor之间的转换,Tensor的拼接,维度的变换等操作。其它Tensor
- 跨浏览器的本地存储(一):userData behaviorDOM Storage,是基于 Web Applications 1.0 spe
- 目录前言场景分析总结前言前几天,有位朋友微信联系我,告知一个生产数据库,在机器宕机恢复后,实例启动失败,而且该实例没有做任何的高可用、容灾、
- 前言调用,让客户端可以更具自身情况自由选择,服务端工作只需要做一份呢?还别说真还有一个准备好的轮子那就是今天的主角《grpc-gateway
- 由 John Resig 的 How JavaScript Timers Work 可以知道,现有的 JavaScript 引擎是单线程处理
- PHP的继承模型中有一个存在已久的问题,那就是在父类中引用扩展类的最终状态比较困难。我们来看一下代码清单5-11中的例子。代码清单5-11意
- 本文讲述了python提示No module named images的解决方法,非常实用!分享给大家供大家参考。具体方法如下:出现提示:I
- 昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件XXX_Data.ldf文件已经增长到了3GB
- 这篇文章主要介绍了python 利用jinja2模板生成html代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。摘要: