playfair密码

playfair密码

简介

普莱费尔密码(英文:Playfair cipher 或 Playfair square)是一种使用一个关键词方格来加密字符对的加密法,1854年由一位名叫查尔斯·惠斯通(Charles Wheatstone)国人发明。
在1854到1855年的克里米亚战争和1899年的布尔战争中有广泛应用。但在1915年的一战中被破译了。

特征

  • 密文的字母数为偶数
  • 任意俩个同组字母不相同,否则为乱码和虚码
  • 有效防止频率分析法

算法

5*5的正方形密码表,排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。 如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待。英语中z使用最少,可以去掉它。

加密

1. 编制密码表

  1. 5*5字母矩阵
  2. 由密钥来构造
  3. 从左到右、从上到下(或从上到下、从左到右)依次填入密钥的字母(不重复,重复的字母不填),然后以字母顺序表填入其他字母
  4. 字母I与J算作一个字母

2. 加密方式

  1. 分组
    将明文两两分组
  • 若明文个数为偶数,直接分组
  • 若明文个数为奇数
    缺补:在最后一个明文字母的后面补上其下一位字母(或者就插入一个字母X(或者Q)。)
  • 若明文分组后同一组字母相同
    同插:在相同的字母中间插入其下一个字母(或者就插入一个字母X(或者Q)。)
    同插补缺操作不分先后,结果相同
  1. 移位和替换
    令每组明文的第一个字母为p1,第二个字母为p2,每组密文的第一个字母为c1,第二个字母为c2有
  • 若p1,p2位于同一行,c1,c2分别为紧靠p1,p2右端的字母(其中第一列为最后一列的右端)
  • 若p1,p2位于同一列,c1,c2分别为紧靠p1,p2下端的字母(其中第一行为最后一行的上端)
  • 若p1,p2既不在同一行,也不在同一列,则c1,c2为p1,p2确定的矩形的其他两角字母(至于横向替换还是纵向替换要事先约好,或自行尝试,例如TL对应EG还是GE)

3. 解密

加密可逆

posted @   Raccoon&JWX  阅读(290)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示