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. 古典密码(单表密码,维吉尼亚密码,普莱费尔密码,一次一密)

    古典密码 1.单表密码(仿射加密) 仿射加密变化是:y=ax+b 算法: 仿射密码是一种表单代换密码,字母表的每个字母相应的值使用一个简单的数学函数对应一个数值,再把对应数值转换成字母. A B C ...

  2. 加密解密工具 之 普莱费尔密码

    普莱费尔密码(英文:Playfair Cipher 或 Playfair Square)是一种使用一个关键词方格来加密字符对的加密法,1854年由一位名叫查尔斯·惠斯通(Charles Wheatst ...

  3. 用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 ...

  4. 普莱费尔密码加密解密

    普莱费尔密码的编写方法通常分为三个步骤,即编制密码表,整理明文,编写译文,下面以明文:pishoupideweinasi和密钥"culture"为例讲解. 1.编制密码表 我们需要 ...

  5. hilbert曲线序编码matlab,Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码

    Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码 王笋,徐小双(华中科技大学控制科学与工程系,武汉 430074) 摘 要 Hilbert曲线是一种重要的图像处理工具,在图像处理,特别是图 ...

  6. c语言 迷宫深度遍历 算法,图的遍历迷宫生成算法浅析

    1. 引言 在平常的游戏中,我们常常会碰到随机生成的地图.这里我们就来看看一个简单的随机迷宫是如何生成. 2. 迷宫描述随机生成一个m * n的迷宫,可用一个矩阵maze[m][n]来表示,如图:   ...

  7. 动态密码卡TOTP算法

    TOTP NET实现:http://googleauthcsharp.codeplex.com/ 引用:http://www.cnblogs.com/wangxin201492/p/5030943.h ...

  8. [迷宫中的算法实践]迷宫生成算法——Prim算法

    普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)), ...

  9. phpcms authkey生成算法问题导致authkey泄露

    关于phpcms authkey生成算法问题导致authkey泄露的修复问题 简介: 漏洞名称:phpcms authkey生成算法问题导致authkey泄露 补丁文件:caches/configs/ ...

最新文章

  1. 【PC工具】解放双手:分享京东双十一任务脚本,双十一京东全民养红包活动自动脚本分享...
  2. 【js】版本号对比处理方案
  3. mysql on delete关键字_MySQL外键约束On Delete、On Update各取值的含义
  4. java计算器简单吗,java简单计算器
  5. 仿Gin搭建自己的web框架(七)
  6. 用数组模拟队列的实现
  7. redhat6.3 安装 mysql_redhat6.3X64/linux 安装多个mysql(编译安装方法)
  8. 基于JAVA+Spring+MYSQL的物流运输管理系统
  9. python三级联动菜单_2分钟制作智能式联动下拉菜单,轻松搞定重复内容,录入不出错...
  10. 计算机信息机房,计算机信息中心机房建设标准
  11. Vue工程报错解决方案Warn:import Vue from “vue“;
  12. java只对_只对你情有独钟:写给Java的情诗
  13. 零基础使用 MATLAB 求解偏微分方程(建议收藏)
  14. 联想MIIX520安装黑苹果参考教程
  15. 基于matlab的语音识别系统,基于Matlab的语音识别系统研究
  16. 新用户域名实名认证教程---金万维
  17. 工业相机之镜头基础知识
  18. CC00027.hadoop——|HadoopHive.V27|——|Hive.v27|Hive优化策略|实战.v03|
  19. js 删除字符串中第一个逗号
  20. realme怎么互传_Realme X刷MIUI11系统后通过普通电脑实现“小米互传”攻略

热门文章

  1. 【数学】扩展卢卡斯定理
  2. npm安装慢 ,卡在sill idealTree buildDeps不动
  3. BigDecimal的equals方法
  4. 3D数学基础——欧拉角与万向节死锁
  5. 第1讲 2.2人机交互
  6. docker 阿里云仓库地址
  7. mysql5.7安装审计日志插件audit-plugin
  8. 基于matlab的雷达和通信系统,基于MATLAB的多功能通信信号源仿真
  9. python 循序渐进学习:输出线段图案、正方形图案、直角三角形图案、翻转直角三角形图案、带空格直角三角形图案
  10. 一行代码回显 LayUI表单数据回显 下拉列表select回显