怎么找网站啊,如何看小程序是哪家公司做的,做外国网站百度搜到,网站原创文章文章目录 前言摩尔斯电码Python实现摩斯密码对照表加密解密测试 完整代码总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Py… 文章目录 前言摩尔斯电码Python实现摩斯密码对照表加密解密测试 完整代码总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前言
在电影《无间道》中刘建明刘德华饰作为黑帮的卧底在一次行动中发现了警察的卧底陈永仁梁朝伟饰与黄警督黄秋生饰通过摩斯电码进行通讯经过紧急的群发区域短信 “有内鬼终止交易” 避免了黑帮头目被抓。
通过动图能看到黄警督和陈永仁仅通过手指的敲击就能完成通讯是不是很神奇
摩尔斯电码
摩斯密码的定义如下
摩尔斯电码 又译为摩斯密码英语Morse code是一种时通时断的信号代码通过不同的排列顺序来表达不同的英文字母、数字和标点符号。是由美国人艾尔菲德·维尔与萨缪尔·摩尔斯在1836年发明。
摩尔斯电码是一种早期的数码化通信形式它依靠一系列的点和划来传递编码信息它的代码包括五种
点 · 1 读 “滴” dit 时间占据1t 划—111 读 “嗒” dah 时间占据3t 字符内部的停顿在点和划之间0 时间占据1t 字符间停顿000 时间占据3t 单词间的停顿0000000 时间占据7t
点的长度也就是上面的时间长度t决定了发报的速度。
我们的英文字母、数字和标点符号与摩斯密码的对照图如下 我们现在要发送 “M O R S E(空格) C O D E” morse code这单词通过查表可知它应该是这样 —— ——— ·—· ··· · / —·—· ——— —·· · 对应的报文应该如下滴 表示敲击▢ 表示停顿 滴滴滴▢滴滴滴▢▢▢滴滴滴▢滴滴滴▢滴滴滴▢▢▢滴▢滴滴滴▢滴▢▢▢滴▢滴▢滴▢▢▢滴▢▢▢▢▢▢▢滴滴滴▢滴▢滴滴滴▢滴▢▢▢滴滴滴▢滴滴滴▢滴滴滴 是不是很有意思
Python实现
用 Python 实现摩斯密码的加解密其实很简单只需要把对照表放在一个字典中加密的时候将明文拆分然后从字典中取出对应的密码组合在一起解密的时候就是通过密文去对照表找对应的明文然后拼在一起就行。 摩斯密码对照表
我们把摩斯密码对照表用字典存储之后是这样的
MORSE\_CODE\_DICT {A: .-, B: -..., C: -.-., D: -.., E: .,F: ..-., G: --., H: ...., I: .., J: .---, K: -.-,L: .-.., M: --, N: -., O: ---, P: .--., Q: --.-,R: .-., S: ..., T: -, U: ..-, V: ...-, W: .--,X: -..-, Y: -.--, Z: --.., 1: .----, 2: ..---, 3: ...--, 4: ....-, 5: ....., 6: -...., 7: --..., 8: ---.., 9: ----., 0: -----, , : --..--, .: .-.-.-, ?: ..--.., /: -..-., -: -....-, (: -.--., ): -.--.-}加密
加密的过程就是将明文通过对照表翻译成密文的过程。
我们逐个读取明文如果是字母、数字或者标点符号就到字典里面找对应的密码字符之间用空格隔开如果是单词之间的空格就添加两个连续空格以隔开单词。
加密过程的代码如下
def encrypt(message):cipher for letter in message:if letter ! :# 查字典并添加对应的摩斯密码# 用空格分隔不同字符的摩斯密码cipher MORSE\_CODE\_DICT\[letter\] else:# 1个空格表示不同的字符# 2表示不同的词cipher return cipher
解密
在解密的情况下我们首先在要解码的字符串末尾添加一个空格我们从字符串中提取字符。
一旦我们得到一个空格我们就会在提取的字符序列或我们的莫尔斯电码中查找相应的英语字符并将其添加到将存储结果的变量中。
一旦我们得到 2 个连续的空格我们就会向包含解码字符串的变量添加另一个空格。
字符串末尾的最后一个空格将帮助我们识别莫尔斯电码字符的最后一个序列。
解密过程的代码如下
# 将字符串从摩斯解密为英文的函数
def decrypt(message):# 在末尾添加额外空间以访问最后一个摩斯密码message decipher citext global ifor letter in message:# 检查空间if letter ! :i 0# 在空格的情况下citext letter# 在空间的情况下else:# 如果 i 1 表示一个新字符i 1# 如果 i 2 表示一个新单词if i 2:# 添加空格来分隔单词decipher else:# 使用它们的值访问密钥加密的反向decipher list(MORSE\_CODE\_DICT.keys())\[list(MORSE\_CODE\_DICT.values()).index(citext)\]citext return decipher测试
我们先来测试一下加密算法
message I LOVE YOU
result encrypt(message.upper())
print(result)运行结果是 … .-… — …- . -.-- — …- 大家可以自己对照着映射表来看看是否正确。
再测试一下解密算法
message .. .-.. --- ...- . -.-- --- ..-
result decrypt(message)
print(result)运行结果是 I LOVE YOU 完整代码
#!/usr/bin/env python3
# -\*- coding: utf-8 -\*-author: 闲欢
# 表示摩斯密码图的字典
MORSE\_CODE\_DICT {A: .-, B: -..., C: -.-., D: -.., E: .,F: ..-., G: --., H: ...., I: .., J: .---, K: -.-,L: .-.., M: --, N: -., O: ---, P: .--., Q: --.-,R: .-., S: ..., T: -, U: ..-, V: ...-, W: .--,X: -..-, Y: -.--, Z: --..,1: .----, 2: ..---, 3: ...--, 4: ....-, 5: ....., 6: -....,7: --..., 8: ---.., 9: ----., 0: -----,, : --..--, .: .-.-.-, ?: ..--.., /: -..-., -: -....-,(: -.--., ): -.--.-}# 根据摩斯密码图对字符串进行加密的函数
def encrypt(message):cipher for letter in message:if letter ! :# 查字典并添加对应的摩斯密码# 用空格分隔不同字符的摩斯密码cipher MORSE\_CODE\_DICT\[letter\] else:# 1个空格表示不同的字符# 2表示不同的词cipher return cipher# 将字符串从摩斯解密为英文的函数
def decrypt(message):# 在末尾添加额外空间以访问最后一个摩斯密码message decipher citext global ifor letter in message:# 检查空间if letter ! :i 0# 在空格的情况下citext letter# 在空间的情况下else:# 如果 i 1 表示一个新字符i 1# 如果 i 2 表示一个新单词if i 2:# 添加空格来分隔单词decipher else:# 使用它们的值访问密钥加密的反向decipher list(MORSE\_CODE\_DICT.keys())\[list(MORSE\_CODE\_DICT.values()).index(citext)\]citext return decipherdef main():message I LOVE YOUresult encrypt(message.upper())print(result)message .. .-.. --- ...- . -.-- --- ..-result decrypt(message)print(result)# 执行主函数
if \_\_name\_\_ \_\_main\_\_:main()总结
整个摩斯密码加密和解密的过程就是对字符串的操作还比较简单。但是想想那些特务啥的通过敲击声或者其他方式去人工解密还是有点技术难度的。这个加解密的程序给自己玩玩还是不错的你觉得呢 关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料给那些想学习 Python 的小伙伴们一点帮助
微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 一、Python所有方向的学习路线
Python所有方向的技术点做的整理形成各个领域的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。
二、Python基础学习视频
② 路线对应学习视频
还有很多适合0基础入门的学习视频有了这些视频轻轻松松上手Python~在这里插入图片描述
③练习题
每节视频课后都有对应的练习题哦可以检验学习成果哈哈 因篇幅有限仅展示部分资料
三、精品Python学习书籍
当我学到一定基础有自己的理解能力的时候会去阅读一些前辈整理的书籍或者手写的笔记资料这些笔记详细记载了他们对一些技术点的理解这些理解是比较独到可以学到不一样的思路。
四、Python工具包项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了每个都有详细的安装教程保证你可以安装成功哦
②Python实战案例
光学理论是没用的要学会跟着一起敲代码动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。100实战案例源码等你来拿
③Python小游戏源码
如果觉得上面的实战案例有点枯燥可以试试自己用Python编写小游戏让你的学习过程中增添一点趣味
五、面试资料
我们学习Python必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有阿里大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。
六、Python兼职渠道
而且学会Python以后还可以在各大兼职平台接单赚钱各种兼职渠道兼职注意事项如何和客户沟通我都整理成文档了。 这份完整版的Python全套学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】