普莱菲尔密码矩阵生成算法
python提供了普莱菲尔密码的加解密包:pycipher
下载地址:https://pypi.python.org/pypi/pycipher
安装:python setup.py install
基本使用:
from pycipher import Playfairprint Playfair('CULTREABDFGHIKMNOPQSVWXYZ').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG') print Playfair('CULTREABDFGHIKMNOPQSVWXYZ').decipher('UKDNLHTGFLWUSEPWHLISNPCGCRGAUBVZAQIV')
输出:
UKDNLHTGFLWUSEPWHLISNPCGCRGAUBVZAQIV
THEQUICKBROWNFOXIUMPSOVERTHELAZYDOGX
# *-* coding=utf-8*-* import stringdef key_deal(key):strs = ''key = string.lower(key)for i in key:if i in strs:passelse:strs = strs + ireturn strsdef get_matrix(key):matrix = [([''] * 5) for i in range(5)]temp = key_deal(key)# print tempcharset = string.lowercasedic = {chr(i+96): i for i in range(1, 27)}a = -1b = -1k = 0m = 0for j in range(5): # 列for i in range(5): # 行if k < len(temp):if dic.get(temp[k]) == 9 or dic.get(temp[k]) == 10:a = ib = jmatrix[i][j] = temp[k]# print i, j, a, b, k, temp[k], matrix[i][j]k += 1continueelse:matrix[i][j] = temp[k]# print i, j, a, b, k, temp[k], matrix[i][j]k += 1continueelse:while m < len(dic):if dic.get(charset[m]) == 9 or dic.get(charset[m]) == 10:if a != -1 or b != -1:matrix[a][b] = matrix[a][b] + charset[m]m += 1 # matrix[i][j]还没定,需要继续else:matrix[i][j] = charset[m]a = ib = j# print i, j, a, b, m, charset[m], matrix[i][j]m += 1breakelse:if charset[m] in temp:m += 1else:matrix[i][j] = charset[m]# print i, j, a, b, m, charset[m], matrix[i][j]m += 1break# for i in range(5):# for j in range(5):# print i, j, matrix[i][j]# return matrixif __name__ == '__main__':key = 'CULTURE'matrix = get_matrix(key)plaintext = 'THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG'strs = string.lower(''.join(plaintext.split(' ')))if len(strs) % 2 != 0:strs += 'x'print strs
转载于:https://www.cnblogs.com/gwind/p/8012049.html
普莱菲尔密码矩阵生成算法相关推荐
- 古典密码(单表密码,维吉尼亚密码,普莱费尔密码,一次一密)
古典密码 1.单表密码(仿射加密) 仿射加密变化是:y=ax+b 算法: 仿射密码是一种表单代换密码,字母表的每个字母相应的值使用一个简单的数学函数对应一个数值,再把对应数值转换成字母. A B C ...
- 加密解密工具 之 普莱费尔密码
普莱费尔密码(英文:Playfair Cipher 或 Playfair Square)是一种使用一个关键词方格来加密字符对的加密法,1854年由一位名叫查尔斯·惠斯通(Charles Wheatst ...
- 用python做算法_自己用python写的螺旋矩阵生成算法
自己用python写的螺旋矩阵生成算法 如果输入6,可以生成如下矩阵: 1 20 19 18 17 16 2 21 32 31 30 15 3 22 33 36 29 14 4 23 34 35 28 ...
- 普莱费尔密码加密解密
普莱费尔密码的编写方法通常分为三个步骤,即编制密码表,整理明文,编写译文,下面以明文:pishoupideweinasi和密钥"culture"为例讲解. 1.编制密码表 我们需要 ...
- hilbert曲线序编码matlab,Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码
Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码 王笋,徐小双(华中科技大学控制科学与工程系,武汉 430074) 摘 要 Hilbert曲线是一种重要的图像处理工具,在图像处理,特别是图 ...
- c语言 迷宫深度遍历 算法,图的遍历迷宫生成算法浅析
1. 引言 在平常的游戏中,我们常常会碰到随机生成的地图.这里我们就来看看一个简单的随机迷宫是如何生成. 2. 迷宫描述随机生成一个m * n的迷宫,可用一个矩阵maze[m][n]来表示,如图: ...
- 动态密码卡TOTP算法
TOTP NET实现:http://googleauthcsharp.codeplex.com/ 引用:http://www.cnblogs.com/wangxin201492/p/5030943.h ...
- [迷宫中的算法实践]迷宫生成算法——Prim算法
普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)), ...
- phpcms authkey生成算法问题导致authkey泄露
关于phpcms authkey生成算法问题导致authkey泄露的修复问题 简介: 漏洞名称:phpcms authkey生成算法问题导致authkey泄露 补丁文件:caches/configs/ ...
最新文章
- 【PC工具】解放双手:分享京东双十一任务脚本,双十一京东全民养红包活动自动脚本分享...
- 【js】版本号对比处理方案
- mysql on delete关键字_MySQL外键约束On Delete、On Update各取值的含义
- java计算器简单吗,java简单计算器
- 仿Gin搭建自己的web框架(七)
- 用数组模拟队列的实现
- redhat6.3 安装 mysql_redhat6.3X64/linux 安装多个mysql(编译安装方法)
- 基于JAVA+Spring+MYSQL的物流运输管理系统
- python三级联动菜单_2分钟制作智能式联动下拉菜单,轻松搞定重复内容,录入不出错...
- 计算机信息机房,计算机信息中心机房建设标准
- Vue工程报错解决方案Warn:import Vue from “vue“;
- java只对_只对你情有独钟:写给Java的情诗
- 零基础使用 MATLAB 求解偏微分方程(建议收藏)
- 联想MIIX520安装黑苹果参考教程
- 基于matlab的语音识别系统,基于Matlab的语音识别系统研究
- 新用户域名实名认证教程---金万维
- 工业相机之镜头基础知识
- CC00027.hadoop——|HadoopHive.V27|——|Hive.v27|Hive优化策略|实战.v03|
- js 删除字符串中第一个逗号
- realme怎么互传_Realme X刷MIUI11系统后通过普通电脑实现“小米互传”攻略