脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python密码学仿射密码及攻击单字母密码教程

Python密码学仿射密码及攻击单字母密码教程

2023-02-16 11:45菜鸟教程 Python

这篇文章主要为大家介绍了Python密码学仿射及攻击单字母密码教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

仿射密码

Affine Cipher是Multiplicative Cipher和Caesar Cipher算法的组合.

仿射密码的基本实现如下图所示 :

Python密码学仿射密码及攻击单字母密码教程

我们将通过创建包含两个加密和解密基本函数的相应类来实现仿射密码.

代码

您可以使用以下代码实现仿射密码 :

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 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')

输出

实现仿射密码时,可以观察到以下输出;

Python密码学仿射密码及攻击单字母密码教程

输出显示纯文本消息仿射密码的加密消息和已作为输入 abcdefg发送的消息的解密消息.

单字母密码

接下来,您将学习使用Python的单字母密码及其黑客攻击.

单字母密码使用固定替换用于加密整个消息.这里显示使用带有JSON对象的Python字典的单字母密码 :

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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对象中的值.

以下程序创建一个单字母程序作为类表示,其中包括加密和解密的所有功能.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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密码的加密和解密过程,如下所示 :

?
1
2
3
4
5
6
7
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)

输出

当您实现上面给出的代码时,您可以观察到以下输出;

Python密码学仿射密码及攻击单字母密码教程

T嗯,你可以用一个指定的键值对来破解单字母密码,这会将密文破解成实际的纯文本.

以上就是Python密码学仿射密码及攻击单字母密码教程的详细内容,更多关于Python仿射攻击单字母密码的资料请关注服务器之家其它相关文章!

原文链接:https://www.it1352.com/OnLineTutorial/cryptography_with_python/cryptography_with_python_affine_cipher.html

延伸 · 阅读

精彩推荐
  • PythonPython列表计数及插入实例

    Python列表计数及插入实例

    这篇文章主要介绍了Python列表计数及插入的用法,以实例形式对列表的计数与插入用法做了较为详细的分析,需要的朋友可以参考下 ...

    脚本之家4462020-05-17
  • Python20行Python代码实现视频字符化功能

    20行Python代码实现视频字符化功能

    这篇文章主要介绍了20行Python代码实现视频字符化功能,本文通过实例代码截图的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价...

    ZackSock12382021-11-04
  • Pythonidea2020手动安装python插件的实现方法

    idea2020手动安装python插件的实现方法

    这篇文章主要介绍了idea2020手动安装python插件的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋...

    伋基岚5482020-07-17
  • PythonPython3.4实现从HTTP代理网站批量获取代理并筛选的方法示例

    Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例

    这篇文章主要介绍了Python3.4实现从HTTP代理网站批量获取代理并筛选的方法,涉及Python网络连接、读取、判断等相关操作技巧,需要的朋友可以参考下...

    multiangle4662020-12-09
  • Python浅析Python模块之间的相互引用问题

    浅析Python模块之间的相互引用问题

    这篇文章主要介绍了Python模块之间的相互引用问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    华为云6082021-09-10
  • Python一篇文章带你了解python标准库--random模块

    一篇文章带你了解python标准库--random模块

    这篇文章主要给大家介绍了关于Python中random模块常用方法的使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值...

    wakeyo_J9592021-12-21
  • Pythonpyqt5 实现多窗口跳转的方法

    pyqt5 实现多窗口跳转的方法

    今天小编就为大家分享一篇pyqt5 实现多窗口跳转的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    flhsxyz13782021-07-16
  • Python对python中字典keys,values,items的使用详解

    对python中字典keys,values,items的使用详解

    今天小编就为大家分享一篇对python中字典keys,values,items的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    HYESC5282021-05-26