信息安全-1:python之playfair密码算法详解[原创]

转发注明出处: http://www.cnblogs.com/0zcl/p/6105825.html 

 

一、基本概念

 

  1. 古典密码是基于字符替换的密码。加密技术有:Caesar(恺撒)密码、Vigenere(维吉尼尔)密码、Playfair密码、Hill密码……
  2. 明文:未经过加密的信息;密文:加密后的信息
  3. 加密解密的过程:如下图

 

 

二、Caesar密码

  这里我先简单讲下恺撒密码,咸觉挺简单的,后面再主要讲Playfair算法原理与编程。

基本原理:

在开拓罗马帝国的时候,恺撒担心信使会阅读他送给士兵的命令,因此发明了对命令进行加密的算法--恺撒密码器

恺撒密码器挺简单的:把字母表中的每个字母向前循环移动3位

  • 加密信息将字母向前移动三位
  • 解密信息将字母向后移动三位
  • 移动的位数是关键,称之为密钥
  • 加密和解密的密钥是相同的,我们称之为对称密码器

 

数学表达

恺撒密码的加密算法表示为:C=E(p)=(p+3) mod 26

恺撒密码的解密算法表示为:p=D(C)=(C-3) mod 26

 

改进的恺撒密码

明文的发送方和接收方事先协商好一个密钥K(1<=K<=25),则:

恺撒密码的加密算法表示为:C=E(p)=(p+K) mod 26

恺撒密码的解密算法表示为:p=D(C)=(C-K) mod 26

 

 

三、Playfair密码

基本原理

Playfair算法基于一个5*5的字母矩阵,该矩阵使用一个关键词构造,方法是按从左到右、从上到下顺序,填入关键词的字母(去除重复字母)后,将字母表其作余字母填入。

例如: 关键词取:monarchy时,字母矩阵为下图如示(矩阵只能放25个字母,I与J同)

 

加密规则(重要)

Playfair加密算法是先将明文按两个字母一组进行分组,然后在矩阵中找对应的密文。

取密文的规则如下:

  1. 若明文出现相同字母在一组,则在重复的明文字母中插入一个填充字母(eg:z)进行分隔后重新分组(eg: balloon被重新分组为ba lz lo on)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值