密码学简介

这是我以前所不知道的。

密码学的基本目的是使两个在不安全信道中通信的人,通常称为Alice和Bob,以一种使他们的敌手Oscar不能明白和理解通信内容的方式进行通信。

定义:一个密码体系是满足一下条件的五元组(P,C,K,E,D)

P代表所有可能的明文组成的有限集

C代表所有可能的密文组成的有限集

K代表密钥空间,由所有可能的密钥组成的有限集

对于每一个k∈K,都存在一个加密规则ek∈E和相应的解密规则dk∈D。并且对每对ek:P→C,dk:C→P,满足条件:对每一个明文x∈P,均有dk(ek(x))=x

移位密码

其基础是数论中的模运算

假设a和b均为整数,m为一正整数,若m整除b-a,则可将其表达成a≡b(mod m)。式a≡b(mod m)读作“a与b模m同余”,正整数m称为模数。

定义

令P=C=K=Z26,对0<=K<=25,任意的x,y∈Zm,定义

ek(x)=(x+K)mod 26

dk=(y-K)mod 26

凯撒密码

当K=3时,此密码叫做凯撒密码,因为他首先被儒乐 凯撒(就是那个凯撒大帝)所使用的。

他将26个字母与数字一一对应,通过移位与mod26,来进行转换。

下面我用python实现加密解密

#加密

def CaserEncode(m,k):

c=''

for i in m:

c+=chr(ord(i)+k)

return c

# 解密

def CaserDecode(c,k):

m=''

for i in c:

m+=chr(ord(i)-k)

return m

栅栏密码

另一种移位密码,栅栏密码通过将明文进行分栏后重新组合进行加密。

例如 The quick brown fox jumps over the lazy dog,先把空格去掉,Thequickbrownfoxjumpsoverthelazydog

再按进行分栏(6个字母为一栏)

Thequi

ckbrow

nfoxju

mpsove

rthela

zydog

再从上到下每一列读出来,Tcnmrzhkfptyeboshdqrxoeouojvlgiwuea

python实现

# 加密

def FenceEncode(m,k):

j=0

L=[]

n=''

for i in m:

#print(i,end='')

n+=i

j+=1

if j==k:

L.append(n)

j=0

n=''

w=0

c=''

for w in range(len(L[0])):

for i in L:

try:

c+=i[w]

except:

pass

return c

#解密

def FenceDecode(c,k):

l=len(c)/k

if l-int(l)>0:

l=int(l)+1

else:

l=int(l)

p=0

n=''

L=[]

for i in c:

#print(i,end='')

n+=i

p+=1

if p==l:

L.append(n)

p=0

n=''

m=''

for w in range(len(L[0])):

for i in L:

try:

m+=i[w]

except:

pass

return m

其他移位密码

曲路密码,云影密码

原文链接:https://blog.csdn.net/weixin_43360152/article/details/108222398

编写python程序实现移位密码_移位密码相关推荐

  1. 编写python程序、计算账户余额_《易学Python》——第1章 为何学习Python 1.1 学习编程...

    本节书摘来自异步社区<易学Python>一书中的第1章,第1.1节,作者[澳]Anthony Briggs,王威,袁国忠 译,更多章节内容可以访问云栖社区"异步社区"公 ...

  2. 编写python程序、计算账户余额_小明有20w存款存在余额宝中,按余额宝年收益为3.35%计算,用Python编写程序计算,多少年后小明的存款达到30w?...

    [判断题]卤素灯泡是在灯泡内充入氟.氯等卤素气体. [单选题]我国刑法第12条关于溯及力的规定采取的是( ). [填空题]本地局域网 LAN 内, () 和无绳电话速率较低,主流带宽是 100kbps ...

  3. 编写python程序、计算账户余额_《计算机科学丛书PYTHON程序设计(原书第2版)/(美])凯.S.霍斯特曼》【价格 目录 书评 正版】_中国图书网...

    出版者的话 译者序 前言 第1章 概述 1 1.1 计算机程序 1 1.2 深入剖析计算机 2 1.3 Python编程语言 4 1.4 熟悉编程环境 5 1.5 分析**个程序 9 1.6 错误 1 ...

  4. 编写python程序、计算账户余额_小明有20w存款存在余额宝中,按余额宝年收益为2.35%计算,用Python编写程序计算,多少年后小明的存款达到30w?...

    [填空题]抓紧时间练习.( ),不得擅自离开( ). [判断题]swallow 意思是 燕子 (2.0分) [填空题]表达,表示 vt. (4.0分) [填空题]预知,预测 vt. [其它]2.入职在 ...

  5. 编写python程序的步骤_编写python程序和运行.py文件的方法步骤

    前提:已安装好 Subliume Test 3 且已经添加好python编译系统,已安装好python3.7 一.新建一个文本文档,将后缀名改为.py 二.使用 Subliume Test 3 打开该 ...

  6. 编写python程序一年365天_编写第一个Python程序

    无论读者使用的是哪种操作系统,相信都已经安装好了 Python 环境,可以通过命令行窗口或者 Python 自带的 IDLE 成功启动交互式解释器(如图所示). 本节将带领读者正式编写第一个 Pyth ...

  7. python意外缩进引发逻辑错误_如何编写 Python 程序

    如何编写 Python 程序 从今以后,保存和运行 Python 程序的标准步骤如下: 对于 PyCharm 用户 打开 PyCharm. 以给定的文件名创建新文件. 输入案例中给出的代码. 右键并运 ...

  8. python公式如何编写_如何编写 Python 程序,资深Python大咖教你玩转Python

    如何编写Python程序,这从来就不是一件很难的事. 下面我教你保存和运行 Python 程序的标准步骤,如下: 对于 PyCharm 用户 1. 打开 PyCharm. 2. 以给定的文件名创建新文 ...

  9. python手机编译器怎么编写程序_怎么用手机编写Python程序?

    手机编写python程序,其实完全可行,目前有许多app都做了适配,下面我简单介绍3个,感兴趣的朋友可以尝试一下: 01.Python编译器 这是一个非常轻巧.便捷的手机python编程软件,安装包也 ...

  10. 编写python程序半径为2.11的圆球的体积_医学生理学(山东大学)知到智慧树题目答案...

    我们常吃的花生米是种子 [单选题]动机说出自(),他认为回忆痛苦的经验将使人回到不愉快的过去,为避免痛苦感受在记忆中的重现,人们常常对这些感受和经验加以抑制,使之不出现在意识中,由此引起遗忘. A. ...

最新文章

  1. android 保存文件到本地可见_android 日记log保存到本地简单方法
  2. rsync 端口更换(默认873)
  3. DNS原理及其解析过程(转)
  4. svnserve.conf - snvserve 的仓库配置文件
  5. 一个案例彻底弄懂如何正确使用 mysql inndb 联合索引
  6. python3生成二维码实例fromm_Python使用mqtt极简例子
  7. OpenGL阴影添加学习材料及总结
  8. pxc mysql mycat_Mycat+Pxc的配置
  9. 【Day10】项目中如何处理安全问题
  10. 8个必备的Python GUI库
  11. Multi-View 3D Reconstruction
  12. 抽象工厂模式_设计模式(3) 抽象工厂模式
  13. pg数据库表接口和数据导出
  14. 手机图片怎么转文本?
  15. AIL(Android init Language)
  16. 网络原理TCP IP
  17. B 站上有哪些很好的学习资源?
  18. python线程池原理及使用
  19. 既想吸猫又不想当猫奴?这款治愈系的机器人或许会适合你
  20. oracle 序列/自增ID

热门文章

  1. SpringBoot开启测试用例
  2. maven md5依赖包
  3. 怎么提高PLC设备的抗干扰能力?
  4. 常见电脑故障维修---主板篇
  5. html+css+js 基于逆波兰式 99%还原windows标准计算器
  6. 去掉TextBox红色验证边框
  7. Navicat 账号迁移与升级步骤
  8. 位置与地图(一)定位获取位置及位置编码-反编码
  9. Java学习分享---数组排序方法
  10. python中的快捷键_python的快捷键