码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-12-28 13:52:59      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

想起一个好玩的事情,使用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))

 

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

标签:

原文地址:http://www.cnblogs.com/sunchao1984/p/5082067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!