Java_摩尔斯密码 非常详细
查看原文:http://www.ibloger.net/article/19.html
前言
(1)也许前段时间你看到过一则新闻,一名学生离校出走好几天,留下一段神奇密码。家长学生一起参与破解,最终找到孩子
(2)也许你看过战争片,有些战争中仍然使用电报传输,电视中的滴答声你是否还记的
(3)也许你看过《无间道》电影,卧底在车上敲打的那些神奇传输符号;http://v.youku.com/v_show/id_XMTY3MDc3MTg0.html
(4)也许你听说过这么一段爱情猜谜传奇。一男子向一女子表白,女子却给了一段摩斯密码,以及很少的提示,并表示,破译这个密码,才答应和他约会。男子死活不得求解,又在百度贴吧里将密码贴出以求助网友,最终密码亦被破解,如今也被学校翻拍成了微电影。http://v.youku.com/v_show/id_XMjMwNDYxNjQ0.html
(5)你是否想过使用2个按钮来控制整个键盘输入,如今Google研发的Gmail Tap 摩斯密码输入法已经成为现实
其实摩尔斯电码并不怎么难,只有简单的 2种 符号表示推荐一个短教学 http://v.youku.com/v_show/id_XNTEyNjczNTA0.html, 接下来一起了解学习
摩尔斯电码
摩尔斯电码
造更加实用的设备。艾尔菲德·维尔构思了一个方案,通过点、划和中间的停顿,可以让每个字元和标点符号彼此独立地发送出去。他们达成一致,同意把这种标识不同符号的方案放到摩尔斯的专利中。这就是现在我们所熟知的美式摩尔斯电码,它被用来传送了世界上第一条电报。这种代码可以用一种音调平稳时断时续的无线电信号来传送,通常被称做连续波(Continuous Wave),缩写为CW。它可以是电报电线里的电子脉冲,也可以是一种机械的或视觉的信号(比如闪光)。作为一种信息编码标准,摩尔斯电码拥有其他编码方案无法超越的长久的生命。摩尔斯电码在海事通讯中被作为国际标准一直使用到1999年。1997年,当法国海军停止使用摩尔斯电码时,发送的最后一条消息是:“所有人注意,这是我们在永远沉寂之前最后的一声呐喊!”
摩尔斯电码手表
元和特殊符号。这种摩尔斯电码的设计主要是针对地面报务员通过电报电线传输的,而非通过无线电波。
字母
字符
|
电码符号
|
字符
|
电码符号
|
字符
|
电码符号
|
字符
|
电码符号
|
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
|
━ ━ ..
|
数字长码
字符
|
电码符号
|
字符
|
电码符号
|
字符
|
电码符号
|
字符
|
电码符号
|
0
|
━ ━ ━ ━ ━
|
1
|
.━ ━ ━ ━
|
2
|
..━ ━ ━
|
3
|
...━ ━
|
4
|
....━
|
5
|
.....
|
6
|
━....
|
7
|
━ ━...
|
8
|
━ ━ ━ ..
|
9
|
━ ━ ━ ━ .
|
数字短码
字符
|
电码符号
|
字符
|
电码符号
|
字符
|
电码符号
|
字符
|
电码符号
|
0
|
—
|
1
|
● —
|
2
|
● ● —
|
3
|
● ● ●— —
|
4
|
● ● ● ● —
|
5
|
● ● ● ● ●
|
6
|
— ● ● ● ●
|
7
|
— —● ● ●
|
8
|
— ● ●
|
9
|
— ●
|
标点符号
字符
|
电码符号
|
字符
|
电码符号
|
字符
|
电码符号
|
字符
|
电码符号
|
.
|
.━.━ .━
|
:
|
━ ━ ━...
|
,
|
━ ━..━ ━
|
;
|
━.━ .━.
|
?
|
..━ ━..
|
=
|
━ ...━
|
'
|
.━ ━ ━ ━ .
|
/
|
━..━ .
|
!
|
━.━ .━ ━
|
━
|
━....━
|
_
|
..━ ━.━
|
"
|
.━ ..━.
|
(
|
━ .━ ━ .
|
)
|
━.━ ━.━
|
$
|
...━ ..━
|
&
|
....
|
@
|
.━ ━.━ .
|
+
|
.━.━.
|
特殊符号
常用缩写
诞生爱情
早已被新科技所取代的摩斯密码,在中国的互联网世界里演绎了一段费尽周折的爱情猜谜传奇。一男子向一女子表白,女子却给了一段摩斯密码,以及很少的提示,并表示,破译这个密码,才答应和他约会。男子死活不得求解,又在百度贴吧里将密码贴出以求助网友,最终密码亦被破解。
Java代码
package cryptology;import java.util.HashMap;
import java.util.Map;/*** 摩尔斯对照表* @author小奎*/
public class ContrastList {Map<Character, String> maplist = new HashMap<Character, String>();// 摩尔斯编码表集合public ContrastList() {maplist.put('A', "●-");maplist.put('B', "-●●●");maplist.put('C', "-●-●");maplist.put('D', "-●●");maplist.put('E', "●");maplist.put('F', "●●-●");maplist.put('G', "--●");maplist.put('H', "●●●●");maplist.put('I', "●●");maplist.put('G', "●---");maplist.put('K', "-●-");maplist.put('L', "●-●●");maplist.put('M', "--");maplist.put('N', "-●");maplist.put('O', "---");maplist.put('P', "●--●");maplist.put('Q', "--●-");maplist.put('R', "●-●");maplist.put('S', "●●●");maplist.put('T', "-");maplist.put('U', "●●-");maplist.put('V', "●●●-");maplist.put('W', "●--");maplist.put('X', "-●●-");maplist.put('Y', "-●--");maplist.put('Z', "--●●");/* 数字电码0-9 */maplist.put('0', "-----");maplist.put('1', "●----");maplist.put('2', "●●---");maplist.put('3', "●●●--");maplist.put('4', "●●●●-");maplist.put('5', "●●●●●");maplist.put('6', "-●●●●");maplist.put('7', "--●●●");maplist.put('8', "---●●");maplist.put('9', "----●");/* 标点符号,可自增删 */maplist.put(',', "--●●--"); // ,逗号maplist.put('.', "●-●-●-"); // .句号maplist.put('?', "●●--●●"); // ?问号maplist.put('!', "-●-●--"); // !感叹号maplist.put('\'', "●----●");// '单引号maplist.put('\"', "●-●●-●");// "引号maplist.put('=', "-●●●-"); // =等号maplist.put(':', "---●●●"); // :冒号maplist.put(';', "-●-●-●"); // ;分号maplist.put('(', "-●--●"); // (前括号maplist.put(')', "-●--●-"); // )后括号maplist.put(' ', "★"); // 留空格,这里的星号是自定义的}}
(2)Main方法测试
package cryptology;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** 摩斯密码测试* @author 小奎*/
public class Main {char plaintext[]; // 明文String ciphertext[]; // 密文StringBuffer plainStr = new StringBuffer(" "); // 明文字符串StringBuffer cipherStr = new StringBuffer(" "); // 密文字符串// 实例化对照表对象ContrastList C = new ContrastList();Map<Character, String> maplist = C.maplist;public static void main(String[] args) {System.out.println("************ 欢迎使用摩尔斯电码程序 **************");Main m = new Main();m.init(); // 初始化m.Encryption(); // 加密m.Decryption(); // 解密}void init(){System.out.println("请输入一段明文:");BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));while (true) {// 正则验证 字母/数字/空格 , . ? + \ / : ; ! = ( )Pattern p =Pattern.compile("^[\\s,\\w,\\.,\\?,\\+,:,;,!,',\",=,\\(,\\)]+$"); String str;try {str = bf.readLine();Matcher m= p.matcher(str);if(m.find()){plaintext = str.toUpperCase().toCharArray(); // 将输入字符转换大写数组字符类型break;}} catch (IOException e) {} System.out.println("未按规则输入..请重新输入..");}}/*** 加密*/void Encryption(){for(int i=0; i<plaintext.length; i++){char tmp = plaintext[i];/* 字母 */if(maplist.containsKey(tmp))cipherStr.append(maplist.get(tmp)).append(" "); // 追加空格}ciphertext = cipherStr.toString().split(" ");System.out.println("加密后:"+cipherStr);}/*** 解密*/void Decryption(){for(int i=1; i<ciphertext.length; i++){String tmp = ciphertext[i];/* 字母 */if(maplist.containsValue(tmp)){for (Entry<Character, String> s : maplist.entrySet()) {if(tmp.equals(s.getValue())){plainStr.append(s.getKey().toString().toLowerCase());}}}}System.out.println("解密后:"+plainStr);}
}
效果如下
Java_摩尔斯密码 非常详细相关推荐
- LeetCode简单题之唯一摩尔斯密码词
题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 "--" , ' ...
- 【每日一算法】唯一摩尔斯密码词
微信改版,加星标不迷路! 每日一算法-唯一摩尔斯密码词 作者:阿广 阅读目录 1 题目 2 解析 1 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如 ...
- LeetCode 804. 唯一摩尔斯密码词(哈希+set)
文章目录 1. 题目 2. 解题 1. 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-&quo ...
- LeetCode(804)——唯一摩尔斯密码词(JavaScript)
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应".-", "b" 对应 &qu ...
- 实验四:激光传感器实验,摩尔斯密码
注意:不要直视激光头,它会对你的眼睛造成很大的伤害. 注意:不要直视激光头,它会对你的眼睛造成很大的伤害. 注意:不要直视激光头,它会对你的眼睛造成很大的伤害. OK,今天来讲一个稍微复杂点的实验 关 ...
- 804.唯一摩尔斯密码词
题目 804.唯一摩尔斯密码词 题目大意 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 ...
- java 摩尔斯电码_Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
804. 唯一摩尔斯密码词 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", " ...
- 力扣 804. 唯一摩尔斯密码词
题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 "--" , ' ...
- 【简单】唯一摩尔斯密码词
题目描述 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 "--" , ...
- JAVA练习243-唯一摩尔斯密码词
题目概述 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 "-..." ...
最新文章
- 简便的golang orm
- Channel的几种状态
- 图片路径上传的配置问题
- oracle备份片校验,oracle rman 备份日志单独备份和交叉校验
- 《SpringBoot揭秘:快速构建微服务体系》—第3章3.5节本章小结
- php7如何安装swoole,PHP7如何安装Swoole?
- 【链接攻击,差分攻击,去标识化代码实现】差分隐私代码实现系列(二)
- 高速的二舍八入三七作五_北京高速公路恢复收费,相关负责人回应收费新政三大热点问题...
- 2018年11月26日 练习3
- 小甲鱼C++笔记(上)1-24
- 软件设计——依赖倒置
- H3C UniServer R6900 G3 服务器介绍
- 功能设计:如何实现一个扫码上传附件的功能
- Oracle OCA、OCP、OCM认证科目及考试内容
- MySQL、JDBC、HTML、CSS、JavaScript、jQuery、tomcat、Http、Servlet、JSP、EL、JSTL、Maven、Cookie、Session(框架第一部分)
- 腾讯百度阿里变身天使投资背后:PE估值偏低
- 安卓APP蓝牙上位机的编写二——搜索附近蓝牙设备
- 从“零”开始学习一下DCT
- Angular 5 整合容联云 即时通讯
- 计算机网络时间校时,若当前系统时间与标准时间误差在( )分钟内,需进行校准。出处:《计算机化系统时钟校准管理规程》MS-E050。...