查看原文: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, 接下来一起了解学习

摩尔斯电码

摩尔斯电码(Morse alphabet)(又译为摩斯电码)是一种时通时断的信号代码,这种信号代码通过不同的排列顺序来表达不同的英文字母、数字和标点符号等。由美国人摩尔斯(Samuel Finley Breese Morse)于1837年发明,为摩尔斯电报机的发明(1835年)提供了条件。 由点dot(.)、划dash(-)两种符号组成,摩尔斯码在早期无线电上举足轻重,是每个无线电通讯者所须必知的。由于通讯号技术之进步,各国已于1999年停止使用摩尔斯码,但由于它所占的频宽最少,又具一种技术及艺术的特性,在实际生活中有广泛的应用。摩尔斯电码morse code 它由两种基本信号和不同的间隔时间组成:短促的点信号“·”,读“的”(Di);保持一定时间的长信号“—”,读“答”(Da)
虽然摩尔斯发明了电报,但他缺乏相关的专门技术。他与艾尔菲德·维尔签定了一个协议,让他帮自己制

摩尔斯电码

造更加实用的设备。艾尔菲德·维尔构思了一个方案,通过点、划和中间的停顿,可以让每个字元和标点符号彼此独立地发送出去。他们达成一致,同意把这种标识不同符号的方案放到摩尔斯的专利中。这就是现在我们所熟知的美式摩尔斯电码,它被用来传送了世界上第一条电报。这种代码可以用一种音调平稳时断时续的无线电信号来传送,通常被称做连续波(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_摩尔斯密码 非常详细相关推荐

  1. LeetCode简单题之唯一摩尔斯密码词

    题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 "--" , ' ...

  2. 【每日一算法】唯一摩尔斯密码词

    微信改版,加星标不迷路! 每日一算法-唯一摩尔斯密码词 作者:阿广 阅读目录 1 题目 2 解析 1 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如 ...

  3. LeetCode 804. 唯一摩尔斯密码词(哈希+set)

    文章目录 1. 题目 2. 解题 1. 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-&quo ...

  4. LeetCode(804)——唯一摩尔斯密码词(JavaScript)

    国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应".-", "b" 对应 &qu ...

  5. 实验四:激光传感器实验,摩尔斯密码

    注意:不要直视激光头,它会对你的眼睛造成很大的伤害. 注意:不要直视激光头,它会对你的眼睛造成很大的伤害. 注意:不要直视激光头,它会对你的眼睛造成很大的伤害. OK,今天来讲一个稍微复杂点的实验 关 ...

  6. 804.唯一摩尔斯密码词

    题目 804.唯一摩尔斯密码词 题目大意 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 ...

  7. java 摩尔斯电码_Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)

    804. 唯一摩尔斯密码词 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", " ...

  8. 力扣 804. 唯一摩尔斯密码词

    题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 "--" , ' ...

  9. 【简单】唯一摩尔斯密码词

    题目描述 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 "--" , ...

  10. JAVA练习243-唯一摩尔斯密码词

    题目概述 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 "-..." ...

最新文章

  1. 简便的golang orm
  2. Channel的几种状态
  3. 图片路径上传的配置问题
  4. oracle备份片校验,oracle rman 备份日志单独备份和交叉校验
  5. 《SpringBoot揭秘:快速构建微服务体系》—第3章3.5节本章小结
  6. php7如何安装swoole,PHP7如何安装Swoole?
  7. 【链接攻击,差分攻击,去标识化代码实现】差分隐私代码实现系列(二)
  8. 高速的二舍八入三七作五_北京高速公路恢复收费,相关负责人回应收费新政三大热点问题...
  9. 2018年11月26日 练习3
  10. 小甲鱼C++笔记(上)1-24
  11. 软件设计——依赖倒置
  12. H3C UniServer R6900 G3 服务器介绍
  13. 功能设计:如何实现一个扫码上传附件的功能
  14. Oracle OCA、OCP、OCM认证科目及考试内容
  15. MySQL、JDBC、HTML、CSS、JavaScript、jQuery、tomcat、Http、Servlet、JSP、EL、JSTL、Maven、Cookie、Session(框架第一部分)
  16. 腾讯百度阿里变身天使投资背后:PE估值偏低
  17. 安卓APP蓝牙上位机的编写二——搜索附近蓝牙设备
  18. 从“零”开始学习一下DCT
  19. Angular 5 整合容联云 即时通讯
  20. 计算机网络时间校时,若当前系统时间与标准时间误差在( )分钟内,需进行校准。出处:《计算机化系统时钟校准管理规程》MS-E050。...

热门文章

  1. 计算机显示器刷新率怎么调,显示器刷新率怎么超频?电脑显示器提高屏幕刷新率超频教程...
  2. 常用MarkDown/LaTeX语法总结
  3. 关于MATLAB中使用latex语法
  4. JEECG框架自定义下拉框
  5. ffmpeg实现摄像头拉流_ffmpeg推流拉流的几种方式
  6. matlab人脸识别论文
  7. B站 - 黑客攻防 入门到入狱 [网络安全] -笔记
  8. 工控c语言培训,[转载]最完整的工控培训、PLC培训教程大全
  9. ios 基础知识点总结
  10. 信息资源管理——基础