python编程挑战——使用python实现恩格玛机——chapter 1

想起一个好玩的事情,使用python来实现德军在二战时加密的设备——恩格玛机。

那么什么是恩格玛机,他是怎么工作的?这篇文章提供了很详细的说明:

https://www.zhihu.com/question/28397034

请看高票回答。

路一步步走,饭一口口吃,下面,我们也来一步步的实现恩格玛机:

chapter 1

用python实现简单的字母替换:

当我输入一串字符串的时候(这串字符串并没有标点符号,只有字母和空格),程序会按照事先设置好的字母替换表,简单的替换掉密码。

如:

abcdefghjiklmnopqrstuvwxyz

qwertyuiopasdfghjklzxcvbnm

那么我输入hello world的时候,它应该自动给我替换成 itssg vgkar

试试看吧!

代码如下:使用的是string的maketrans方法,你想到了吗?

# -*- coding:utf-8 -*-
# 本代码的目的是通过python实现德军二战时期的密码机:恩格玛
# 首先,第一步是定义一个简单的函数:简单字符替换
import re
import string

def simple_replace(password, replace_word):
    if not type(password) == type(replace_word) == type(‘a‘):
        print(‘密码必须是字符串!‘)
        return False
    an = re.match(‘[a-z\s]+$‘, password)
    if not an:
        print(‘字符串只能包含小写字母和空格!‘)
        return False
    if len(replace_word) != 26:
        print(‘替换码必须为26个字母!‘)
        return False
    ori_table = ‘abcdefghijklmnopqrstuvwxyz‘
    table = str.maketrans(ori_table, replace_word)
    return str.translate(password, table)

a_password = input(‘请输入明文:‘)
r_password = ‘qwertyuiopasdfghjklzxcvbnm‘
print(‘密文如下:‘, simple_replace(a_password, r_password))
时间: 2024-09-30 00:38:20

python编程挑战——使用python实现恩格玛机——chapter 1的相关文章

编程实现恩格玛加密机(C++)

相信各位看了<模仿游戏>之后,都会对这个二战的加密方法感到很好奇吧,我也不例外,因此编了个程序实现了恩格玛加密机,这机器最大的特点就是有着自反性,只要初始设置一致的时候,那么它就是自反的,比如输入A,加密后B,在一样的设置下,输入B一定会输出A. 详细的介绍可以看这里: http://www.zhihu.com/question/28397034 下面我实现的是简化版的,没有插线板(如果加上去也是很简单的,只需要替换指定的字母就可以了,这里为了简洁就不添加了) #include <str

学习Python编程的11个资源

转自 http://blog.jobbole.com/71064/  用于以后学习备份 用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因为用 Python 来构建游戏的资源实在是太多了.这是一种快速 学习语言的一种方法. 许多程序员使用 Python 作为初学语言,然后接着是像 PHP 和 Ruby 这样的语言.它也是2014最热门的 web 开

学习Python编程的11个精品资源

本文由 伯乐在线 - atupal 翻译自 Alex Ivanovs.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因为用 Python 来构建游戏的资源实在是太多了.这是一种快速 学习语言的一种方法. 许多程序员使用 Python 作为初学语言,然后接着是像 PHP 和 Ruby 这样的语言.

零基础能学Python编程吗 Python就业市场怎样

零基础能学Python编程吗?Python就业市场怎样?Python的用处很广,比如数据挖掘,数据分析,网络爬虫,机器学习,科学计算哲学前沿领域都Python的用武之地. 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的,因为现在Python正在朝着3.x版本进化,在进化过程中,大量的针对2.x版本的代码要修改后才能运行.所以,目前有许多第三方库还暂时无法在3.x上使用. ? ? 学习Python语言,就像学习其他编程语言或者是学习某门外语一样 ,我们应该从Py

python编程之赋值和拷贝的区别概述及操作excel数据库(图)

python编程之赋值和拷贝的区别概述及操作excel数据库(图)一.赋值在Python中,对象的赋值就是简单的对象引用,这点和C++不同,如下所示:a = [1,2,"hello",['python', 'C++']] b = a在上述情况下,a和b是一样的,他们指向同一片内存,b不过是a的别名,是引用.我们可以使用bisa 去判断,返回True,表明他们地址相同,内容相同,也可以使用id()函数来查看两个列表的地址是否相同.赋值操作(包括对象作为参数.返回值)不会开辟新的内存空间,

Python编程快速上手 让繁琐工作自动化pdf

[下载地址] 如今,人们面临的大多数任务都可以通过编写计算机软件来完成.Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.通过Python编程,我们能够解决现实生活中的很多任务. 本书是一本面向实践的Python编程实用指南.本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能.本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们.第二部分的每一章都有一些项目程

从能做什么到如何去做,一文带你快速掌握Python编程基础与实战

摘要:Python语言的教程虽然随处可见,但是忙于日常业务/学习的你或许:一直想要"找个时间学一点",但是又不知道该从何下手?本文将从Python能做什么,如何学习Python以及Python的基础知识为你的Python之路点上一盏明灯. 本文内容根据演讲视频以及PPT整理而成. 本文的分享主要围绕以下几个方面: Python能做什么?(常见应用场景介绍) 如何学习Python? Python语法基础实战 Python面向对象编程实战 练熟基础:2048小游戏项目的实现与实战 福利:小

python编程技巧

python编程中常用的12种基础知识总结: 正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进制转换,Python调用系统命令或者脚本,Python 读写文件. 1.正则表达式替换目标: 将字符串line中的 overview.gif 替换成其他字符串 >>> line = '<IMG ALIGN="middle" SRC=\'#\'" /spa

《Python编程快速上手 让繁琐工作自动化》pdf

<div id="article_content" class="article_content tracking-ad" data-mod="popu_307" data-dsm="post"> <p><br></p><p>下载地址:<a target="_blank" href="https://page74.ctfile.co