python实现七个基本算法(python实现维吉尼亚算法)
python实现七个基本算法
python实现维吉尼亚算法本文实例为大家分享了python实现维吉尼亚算法的具体代码,供大家参考,具体内容如下
1 virginia加密算法、解密算法
vigenenre密码是最著名的多表代换密码,是法国著名密码学家vigenenre发明的。vigenenre密码使用一个词组作为密钥,密钥中每一个字母用来确定一个代换表,每一个密钥字母被用来加密一个明文字母,第一个密钥字母加密第一个明文字母,第二个密钥字母加密第二个明文字母,等所有密钥字母使用完后,密钥再次循环使用,于是加解密前需先将明密文按照密钥长度进行分组。
密码算法可表示如下:。
设明文串为:
m=m1m2…mn,mi∈charset, n是明文长度
秘钥为:
k=k1k2…kd,ki∈charset, d是秘钥长度
密文为:
c=c1c2…cn,ci∈charset, n是密文长度
加密算法:
cj+td=(mj+td+kj ) mod 26
j=1…d, t=0…ceiling(n/d)-1
其中ceiling(x)函数表示不小于x最小整数
解密算法:
mj+td=(cj+td -kj ) mod 26
j=1…d, t=0…ceiling(n/d)-1
其中ceiling(x)函数表示不小于x最小整数
加解密代码如下
|
def vigenereencrypto(message, key): mslen = len (message) keylen = len (key) message = message.upper() key = key.upper() raw = "abcdefghijklmnopqrstuvwxyz" # 明文空间 # 定义加密后的字符串 ciphertext = "" # 开始加密 for i in range ( 0 , mslen): # 轮询key的字符 j = i % keylen # 判断字符是否为英文字符,不是则直接向后面追加且继续 if message[i] not in raw: ciphertext + = message[i] continue encodechr = chr (( ord (message[i]) - ord ( "a" ) + ord (key[j]) - ord ( "a" )) % 26 + ord ( "a" )) # 追加字符 ciphertext + = encodechr # 返回加密后的字符串 return ciphertext if __name__ = = "__main__" : message = "hello, world!" key = "key" text = vigenereencrypto(message, key) print (text) def vigeneredecrypto(ciphertext, key): mslen = len (ciphertext) keylen = len (key) key = key.upper() raw = "abcdefghijklmnopqrstuvwxyz" # 密文空间 plaintext = "" for i in range ( 0 , mslen): # 开始解密 # 轮询key的字符 j = i % keylen # 判断字符是否为英文字符,不是则直接向后面追加且继续 if ciphertext[i] not in raw: plaintext + = ciphertext[i] continue decodechr = chr (( ord (ciphertext[i]) - ord ( "a" ) - ord (key[j]) - ord ( "a" )) % 26 + ord ( "a" )) # 追加字符 plaintext + = decodechr # 返回加密后的字符串 return plaintext if __name__ = = "__main__" : ciphertext = "rijvs, ambpb!" key = "key" text = vigeneredecrypto(ciphertext, key) print (text) import vigeneredecrypto import vigenereencrypto def main(): info = '''==========********==========''' # 开始加密 print (info, "\n------维吉尼亚加密算法------" ) print (info) # 读取测试文本文档 message = open ( "test.txt" , "r+" ).read() print ( "读取测试文本文档:test.txt" ) print ( "开始加密!" ) # 输入key key = input ( "请输入密钥:" ) # 进入加密算法 ciphertext = vigenereencrypto.vigenereencrypto(message, key) # 写入密文文本文档 c = open ( "ciphertext.txt" , "w+" ) c.write(ciphertext) c.close() print ( "加密后得到的密文是: \n" + ciphertext) # 开始解密 print (info, "\n------维吉尼亚解密算法------" ) print (info) # 读取加密文本文档 print ( "读取密文文本文档:ciphertext.txt" ) ciphertext = open ( "ciphertext.txt" , "r+" ).read() # 进入解密算法 print ( "开始解密!" ) plaintext = vigeneredecrypto.vigeneredecrypto(ciphertext, key) p = open ( "plaintext.txt" , "w+" ) # 写入解密文本文档 p.write(plaintext) p.close() print ( "解密后得到的明文是 : \n" + plaintext) if __name__ = = "__main__" : main() |
2重合指数法
2.1重合指数
设x=x1x2...xn是一个含有n个字符的字符串,x的重合指数记为ic(x),定义为x中两个随机元素相同的概率。
设y是一个长度为n密文,即y=y1y2...ym,其中y是密文字母,同样来求从中抽到两个相同字母的概率是多少。为此,设na为字母a在这份密文中的频数,设nb为字母b在这份密文中的频数,依此类推
从n个密文字母中抽取两个字母的方式有
- 最简单python的100个代码(20条非常实用的Python代码实例)
- python类继承和封装(Python面向对象程序设计类的封装与继承用法示例)
- python模块光照强度(我如何用 CircuitPython 和开源工具监控温室)
- 零基础学计算机二级python(计算机二级python学习教程1 教大家如何学习python)
- python爬虫request方法介绍(详解Python3网络爬虫二:利用urllib.urlopen向有道翻译发送数据获得翻译结果)
- python变量指向讲解(详解python中init方法和随机数方法)
- python编程将一个三位数反序输出(python实现整数的二进制循环移位)
- zabbix sender能否发送告警数据(python3实现zabbix告警推送钉钉的示例)
- opencv轮廓模糊识别(Opencv+Python实现图像运动模糊和高斯模糊的示例)
- python最基本的编程工具(5款Python程序员高频使用开发工具推荐)
- python常用的字符串操作方法(Python字符串的常见操作实例小结)
- python操作sql server数据库(Python 数据库操作 SQLAlchemy的示例代码)
- python中的类和对象的定义和使用(Python类的继承、多态及获取对象信息操作详解)
- python配合docker(Docker构建python Flask+ nginx+uwsgi容器)
- python3爬虫代码(Python3爬楼梯算法示例)
- pythontime模块有哪些(Python3.5内置模块之time与datetime模块用法实例分析)
- 乔欣 古装剧中的高颜值(古装剧中的高颜值)
- 怎么才可以财富自由(如何让自己实现财富自由)
- 为什么越来越多年轻人回农村(为什么越来越多年轻人回农村生活)
- 怎么快速学好英语(怎么快速学好英语初中)
- 中国留学生都是富二代吗()
- 我们现在吃的苹果是哪里来的 原来现代苹果引入中国仅有一百多年(我们现在吃的苹果是哪里来的)
热门推荐
- 服务器虚拟化需要哪些技术(认识云服务器的虚拟化实现途径)
- linux系统的pwd命令单词全称(WDCP是什么?Linux服务器管理系统WDCP有什么用?)
- mysql中date_format日期格式化
- python 的常用工具(Python静态类型检查新工具之pyright 使用指南)
- html5基础知识入门(萌新HTML5 入门指南二)
- mysql中mergeinto的用法(MySQL中exists、in及any的基本用法)
- php内存占用分析(PHP基础之输出缓冲区基本概念、原理分析)
- amaze算法(amazeui 验证按钮扩展的实现)
- python3语法规则(详解Python3注释知识点)
- css动画的性能(你所不知道的 CSS 动画技巧与细节)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9