python密码学Vignere密码教程

 更新时间:2022年05月24日 11:11:33   作者:菜鸟教程  
这篇文章主要为大家介绍了python密码学Vignere密码教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Vignere密码

Vignere Cipher包含用于加密和解密的Caesar Cipher算法. Vignere Cipher与Caesar Cipher算法类似,只有一个主要区别:Caesar Cipher包含一个字符移位的算法,而Vignere Cipher包含多个字母移位的键.

数学方程

Vignere密码使用多组替换,因此它也被称为 polyalphabetic cipher . Vignere Cipher将使用字母键而不是数字键表示:字母A将用于键0,字母B将用于键1,依此类推.加密过程之前和之后的字母数字显示在下面 :

基于Vignere密钥长度的可能密钥数量的可能组合如下,给出了Vignere Cipher算法的安全性的结果 :

Vignere Tableau

用于Vignere密码的画面如下所示 :

实现

让我们了解如何实现Vignere密码.考虑文本这是Vignere密码的基本实现将被编码,使用的密钥是 PIZZA.

代码

您可以使用以下代码在Python中实现Vignere密码 :

import pyperclip
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def main():
   myMessage = "This is basic implementation of Vignere Cipher"
   myKey = 'PIZZA'
   myMode = 'encrypt'  
   if myMode == 'encrypt':
      translated = encryptMessage(myKey, myMessage)
   elif myMode == 'decrypt':
      translated = decryptMessage(myKey, myMessage)  
   print('%sed message:' % (myMode.title()))
   print(translated)
   print()
def encryptMessage(key, message):
   return translateMessage(key, message, 'encrypt')
def decryptMessage(key, message):
   return translateMessage(key, message, 'decrypt')
def translateMessage(key, message, mode):
   translated = [] # stores the encrypted/decrypted message string
   keyIndex = 0
   key = key.upper()
   for symbol in message:
      num = LETTERS.find(symbol.upper())
      if num != -1:
         if mode == 'encrypt':
            num += LETTERS.find(key[keyIndex])
elif mode == 'decrypt':
               num -= LETTERS.find(key[keyIndex])
            num %= len(LETTERS)            
            if symbol.isupper():
               translated.append(LETTERS[num])
            elif symbol.islower():
               translated.append(LETTERS[num].lower())
            keyIndex += 1
            
            if keyIndex == len(key):
               keyIndex = 0
         else:
            translated.append(symbol)
      return ''.join(translated)
if __name__ == '__main__':
   main()

输出

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

攻击Vignere密码的可能组合几乎是不可能的.因此,它被视为安全加密模式.

以上就是python密码学Vignere密码教程的详细内容,更多关于python密码学Vignere的资料请关注脚本之家其它相关文章!

相关文章

  • pytorch配置双显卡方式,使用双显卡跑代码

    pytorch配置双显卡方式,使用双显卡跑代码

    这篇文章主要介绍了pytorch配置双显卡方式,使用双显卡跑代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python使用Supervisor来管理进程的方法

    Python使用Supervisor来管理进程的方法

    这篇文章主要介绍了Python使用Supervisor来管理进程的方法,涉及Supervisor的相关使用技巧,需要的朋友可以参考下
    2015-05-05
  • Python 处理日期时间的Arrow库使用

    Python 处理日期时间的Arrow库使用

    这篇文章主要介绍了Python 处理日期时间的Arrow库使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • python socket通信编程实现文件上传代码实例

    python socket通信编程实现文件上传代码实例

    这篇文章主要介绍了python socket通信编程实现文件上传代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • python输入错误后删除的方法

    python输入错误后删除的方法

    在本篇文章里小编给读者们整理了关于python输入错误后删除的方法以及相关知识点,有兴趣的朋友们学习下。
    2019-10-10
  • Flask中特殊装饰器的使用

    Flask中特殊装饰器的使用

    在Flask中,before_request和after_request是用作装饰器的特殊函数,本文主要介绍了Flask中特殊装饰器的使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Python logging模块进行封装实现原理解析

    Python logging模块进行封装实现原理解析

    这篇文章主要介绍了Python logging模块进行封装实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • python django 实现验证码的功能实例代码

    python django 实现验证码的功能实例代码

    本篇文章主要介绍了python django 实现验证码的功能实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • python:按行读入,排序然后输出的方法

    python:按行读入,排序然后输出的方法

    今天小编就为大家分享一篇python:按行读入,排序然后输出的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python批量操作Excel文件详解

    Python批量操作Excel文件详解

    因为博主所在的地方,需要每周整理全校的青年大学习数据,Excel操作本身不难,但是这种毫无意义的体力劳动做久了就会很无趣,刚好我想起来上学期接触过Python,想着能不能试一下,取代这种无意义的劳动
    2021-11-11

最新评论