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. MIT与FAIR提出「mixup」,利用数据和标签的随机线性插值提高神经网络的健壮性
  2. 数字图像处理技术详解程序_安装地暖施工程序有哪些 安装地暖技术要求是什么【详解】...
  3. 离散对数和原根 欧拉定理证明
  4. 剑指offer--在O(1)时间内删除链表结点
  5. Java-IO-对接流
  6. 微信停机断网可充话费;苹果正研发可折叠屏幕 iPad;Rust 1.36.0 发布 | 极客头条...
  7. [渝粤教育] 西南科技大学 经济法学 在线考试复习资料(1)
  8. linux 第六章 linux中的进程管理
  9. google 搜索接口
  10. 小白如何在阿里云快速建站(pc站+手机站+公众号+小程序)
  11. 国科大 计算机网络 复习整理笔记
  12. ADO/ADO.NET
  13. VBS了解一下呗(有没有用学了才知道)
  14. Vue--keep-alive--详解
  15. 随机优化中的样本均值近似方法
  16. 敏捷领导力系列介绍--全景领导力LCP的学习心得
  17. 『高性能模型』轻量级网络梳理
  18. 中信科移动IPO过会:年营收57亿 拟募资40亿重点研发5G
  19. RPC 远程过程调用(Remote Procedure Call)
  20. COG封装工艺的介绍

热门文章

  1. Origin 中做图超出页面的调整办法
  2. VPS与云服务器应该如何选择?
  3. Android Studio挂载第三方模拟器
  4. python写api接口实战
  5. 微信小程序模拟车位选择功能(简陋版本)
  6. 40了解云计算平台的高可用架构,如 AWS 的多可用区、GCP 的负载均衡器
  7. php代码优化思路,PHP优化思路 Web程序 - 贪吃蛇学院-专业IT技术平台
  8. 图解HTTP(四)—— 返回结果的HTTP状态码
  9. Java 实现数据脱敏的技术方案
  10. 从零开始研发GPS接收机连载——10、位同步和帧同步