電報編譯
❶ 在第二次世界大戰中世界電報密碼的名字
莫爾斯電碼
莫爾斯電碼是美國人莫爾斯於1844年發明的。
摩爾斯電碼的歷史
最早的摩爾斯電碼是一些表示數字的點和劃。數字對應單詞,需要查找一本代碼表才能知道每個詞對應的數。用一個電鍵可以敲擊出點、劃以及中間的停頓。
雖然摩爾斯發明了電報,但他缺乏相關的專門技術。他與Alfred Vail簽定了一個協議,讓他幫自己製造更加實用的設備。Vail構思了一個方案,通過點、劃和中間的停頓,可以讓每個字元和標點符號彼此獨立地發送出去。他們達成一致,同意把這種標識不同符號的方案放到摩爾斯的專利中。這就是現在我們所熟知的美式摩爾斯電碼,它被用來傳送了世界上第一條電報。
這種代碼可以用一種音調平穩時斷時續的無線電信號來傳送,通常被稱做連續波(Continuous Wave),縮寫為CW。它可以是電報電線里的電子脈沖,也可以是一種機械的或視覺的信號(比如閃光)。
一般來說,任何一種能把書面字元用可變長度的信號表示的編碼方式都可以稱為摩爾斯電碼。但現在這一術語只用來特指兩種表示英語字母和符號的摩爾斯電碼:美式摩爾斯電碼被使用了在有線電報通信系統;今天還在使用的國際摩爾斯電碼則只使用點和劃(去掉了停頓)。
電報公司根據要發的信的長度收費。商業代碼精心設計了五個字元組成一組的代碼,做為一個單詞發送。比如:BYOXO ("Are you trying to crawl out of it?";LIOUY ("Why do you not answer my question?",;AYYLU ("Not clearly coded, repeat more clearly."。這些五個字元的簡語可以用摩爾斯電碼單獨發送。在網路用辭中,我們也會說一些最常用的摩爾斯商用代碼。現在仍然在業余無線電中使用的有Q簡語和Z簡語:他們最初是為報務員之間交流通信質量、頻率變更、電報編號等信息服務的。
1838年1月8日,Alfred Vail展示了一種使用點和劃的電報碼,這是摩爾斯電碼前身。
作為一種信息編碼標准,摩爾斯電碼擁有其他編碼方案無法超越的長久的生命。摩爾斯電碼在海事通訊中被作為國際標准一直使用到1999年。1997年,當法國海軍停止使用摩爾斯電碼時,發送的最後一條消息是:「所有人注意,這是我們在永遠沉寂之前最後的一聲吶喊」!
莫爾斯電碼由點(.)、劃(-)兩種符號按以下原則組成:
1,一點為一基本信號單位,每一劃的時間長度相當於3點的時間長度。
2,在一個字母或數字內,各點、各劃之間的間隔應為兩點的長度。
3,字母(數字)與字母(數字)之間的間隔為7點的長度。
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 -----
? ..--..
/ -..-.
() -.--.-
- -....-
. .-.-.-
還有一種表示莫爾斯密碼的方法:將旗子向左劃表示一橫,向右表示一點。這種方法已經沒多少人知道了。
幾種常見密碼形式:
1、柵欄易位法。
即把將要傳遞的信息中的字母交替排成上下兩行,再將下面一行字母排在上面一行的後邊,從而形成一段密碼。
舉例:
TEOGSDYUTAENNHLNETAMSHVAED
解:
將字母分截開排成兩行,如下
T E O G S D Y U T A E N N
H L N E T A M S H V A E D
再將第二行字母分別放入第一行中,得到以下結果
THE LONGEST DAY MUST HAVE AN END.
2、愷撒移位密碼。
也就是一種最簡單的錯位法,將字母表前移或者後錯幾位,例如:
明碼表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密碼表:DEFGHIJKLMNOPQRSTUVWXYZABC
這就形成了一個簡單的密碼表,如果我想寫frzy(即明文),那麼對照上面密碼表編成密碼也就是iucb(即密文)了。密碼表可以自己選擇移幾位,移動的位數也就是密鑰。
3、進制轉換密碼。
比如給你一堆數字,乍一看頭暈暈的,你可以觀察數字的規律,將其轉換為10進制數字,然後按照每個數字在字母表中的排列順序,拼出正確字母。
舉例:110 10010 11010 11001
解:
很明顯,這些數字都是由1和0組成,那麼你很快聯想到什麼?二進制數,是不是?嗯,那麼就試著把這些數字轉換成十進制試試,得到數字6 18 26 25,對應字母表,破解出明文為frzy,呵呵~
4、字母頻率密碼。
關於詞頻問題的密碼,我在這里提供英文字母的出現頻率給大家,其中數字全部是出現的百分比:
a 8.2 b 1.5 c 2.8 d 4.3
e 12.7 f 2.2 g 2.0 h 6.1
i 7.0 j 0.2 k 0.8 l 4.0
m 2.4 n 6.7 o 7.5 p 1.9
q 0.1 r 6.0 s 6.3 t 9.1
u 2.8 v 1.0 w 2.4 x 0.2
y 2.0 z 0.1
詞頻法其實就是計算各個字母在文章中的出現頻率,然後大概猜測出明碼表,最後驗證自己的推算是否正確。這種方法由於要統計字母出現頻率,需要花費時間較長,本人在此不舉例和出題了,有興趣的話,參考《跳舞的小人》和《金甲蟲》。
5、維熱納爾方陣。
上面所說的頻率分析,很容易破解較長篇幅的密文,於是維熱納爾繼承前人的經驗,創造出了這個維熱納爾方陣,從而克服了詞頻分析輕易能夠破解密碼的弊端,成為一種較為強大的密碼編譯形式。
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 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 A
2 C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
3 D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
4 E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
5 F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
6 G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
7 H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
8 I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
9 J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
10 K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
11 L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
12 M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
13 N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
14 O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
15 P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
16 Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
17 R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
18 S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
19 T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
20 U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
21 V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
22 W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
23 X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
24 Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
25 Z 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
26 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
以上就是維熱納爾方陣,它由明碼表(第一行的字母)、密碼表(下面26行)和密鑰組成,下面我舉個例子說明。
舉例:
密鑰:frzy
密碼:qfuc
解:第一個字母,看以f開頭第五行,對應明碼表查找q字母所標示的字母為l。以此類推找出後面字母。所得明文為love。
一些新興的密碼形式:
1、利用鍵盤
無論是計算機鍵盤,還是手機鍵盤,都是出密碼的好工具哦,可以用錯位、或者排列形狀等。使用手機鍵盤和這個同理。另外手機鍵盤還可以在鍵盤的字母上做文章,例如你可以用51表示字母j,用73表示字母r等。
舉例:
r4a6
這個密碼利用計算機鍵盤,將明文字母分別向上移動一個位置,得到密文。破解結果為frzy。
852 74123 74123698 74269 78974123456 7412369
這排數字是不是很暈?其實很簡單,對照小鍵盤,依次打這些字母,看組成的形狀就行了。答案是I L O V E U。
2、字母形狀
如hep poo6。這個你可以從手機里打出來,然後把手機倒過來看,形成了密碼的明文,good day。
❷ c語言編譯系統有哪些及其特點
C 語言特點
C語言是一種成功的系統描述語言,用C語言開發的UNIX操作系統就是一個成功的範例;同時C語言又是一種通用的程序設計語言,在國際上廣泛流行。世界上很多著名的計算公司都成功的開發了不同版本的C語言,很多優秀的應用程序也都使用C語言開發的,它是一種很有發展前途的高級程序設計語言。 1. C是中級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、位元組和地址進行操作, 而這三者是計算機最基本的工作單元。 2.C是結構式語言。結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。 3.C語言功能齊全。具有各種各樣的數據類型,並引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大,可以實現決策目的的游戲。 c語言
4. C語言適用范圍大。適合於多種操作系統,如Windows、DOS、UNIX等等;也適用於多種機型。 C語言對編寫需要硬體進行操作的場合,明顯優於其它解釋型高級語言,有一些大型應用軟體也是用C語言編寫的。 C語言具有較好的可移植性,並具備很強的數據處理能力,因此適於編寫系統軟體,三維,二維圖形和動畫。它是數值計算的高級語言。 常用的C語言IDE(集成開發環境)有Microsoft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++,Borland C++ Builder,GNU DJGPP C++,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc 等等…… c語言的學習 對於一個初學者,Microsoft Visual C++是一個比較好的軟體。界面友好,功能強大,調試也很方便。這是微軟出的一個C語言集成開發環境(IDE),主要有:VC++6.0、VS2005、VS2008、VS2010等,分為企業版和學生版等。對於初學者VC++6.0是比較容易上手的,但由於其對標准支持的不好可能使人養成不良編程習慣,因此論壇上也有人主張舍棄VC++6.0。 在unix/linux操作系統上,學習c語言一般使用vim/emacx來編輯源文件,使用gcc/cc來編譯源文件,使用make程序來管理編譯過程。
編輯本段發展歷史
c語言
C語言的祖先是BCPL語言。 1967年,劍橋大學的Martin Richards 對CPL語言進行了簡化,於是產生了BCPL(Basic Combined Pogramming Language)語言。 1970年,美國貝爾實驗室的Ken Thompson。以BCPL語言為基礎,設計出很簡單且很接近硬體的B語言(取BCPL的首字母)。並且他用B語言寫了第一個UNIX操作系統。 在1972年,美國貝爾實驗室的D.M.Ritchie在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。 為了使UNIX操作系統推廣,1977年Dennis M.Ritchie 發表了不依賴於具體機器系統的C語言編譯文本《可移植的C語言編譯程序》。 1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchie合著 c語言程序設計
了著名的《The C Programming Language》一書。通常簡稱為《K&R》,也有人稱之為《K&R》標准。但是,在《K&R》中並沒有定義一個完整的標准C語言,後來由美國國家標准化協會(American National Standards Institute)在此基礎上制定了一個C語言標准,於一九八三年發表。通常稱之為ANSI C。 K&R第一版在很多語言細節上也不夠精確,對於pcc這個「參照編譯器」來說,它日益顯得不切實際;K&R甚至沒有很好表達它所要描述的語言,把後續擴展扔到了一邊。最後,C在早期項目中的使用受商業和政府合同支配,它意味著一個認可的正式標準是重要的。因此(在M. D. McIlroy的催促下),ANSI於1983年夏天,在CBEMA的領導下建立了X3J11委員會,目的是產生一個C標准。X3J11在1989年末提出了一個他們的報告[ANSI 89],後來這個標准被ISO接受為ISO/IEC 9899-1990。 1990年,國際標准化組織ISO(International Organization for Standards)接受了89 ANSI C 為I SO C 的標准(ISO9899-1990)。1994年,ISO修訂了C語言的標准。 1995年,ISO對C90做了一些修訂,即「1995基準增補1(ISO/IEC/9899/AMD1:1995)」。1999年,ISO有對C語言標准進行修訂,在基本保留原來C語言特徵的基礎上,針對應該的需要,增加了一些功能,尤其是對C++中的一些功能,命名為ISO/IEC9899:1999。 2001年和2004年先後進行了兩次技術修正。 目前流行的C語言編譯系統大多是以ANSI C為基礎進行開發的,但不同版本的C編譯系統所實現的語言功能和語法規則有略有差別。
❸ c語言編譯輸入一行電報文字可以任先輸入,一為原文輸入,一為將字母變成下一字母
#include <iostream.h>
const int N=200;
int main()
{
char s[N];
cout<<"Please input a string."<<endl;
cin.getline(s,N);
for(int i=0;s[i]!='\0';i++)
{
if(s[i]>='a' && s[i]<'z' || s[i]>='A' && s[i]<'Z')
s[i]=s[i]+1;
else if(s[i]=='z' || s[i]=='Z')
s[i]=s[i]-25;
else
continue;
}
cout<<"加密後為"<<endl;
cout<<s<<endl;
return 0;
}
❹ 編譯預處理編程題 :用條件編譯實現從鍵盤上輸入一行電文,可以任意選擇兩種輸出
如果定義了 宏名 ENCODE 則編譯後的程序輸出編了碼的。
如果沒有定義這個宏名 則編譯後的程序 按原句輸出。
#include<stdio.h>
// if you have the line, it will output encoded
#define ENCODE
int main()
{
char s[100];
int i;
printf("input one line string:\n");
gets(s);
#ifdef ENCODE
for (i=0;i<strlen(s);i++){
if (s[i]>='a' && s[i]<='z') s[i]=(s[i]-'a'+3) % 26 + 'a';
else if (s[i]>='A' && s[i]<='Z') s[i]=(s[i]-'A'+3) % 26 + 'A';
}
#endif
printf("%s\n",s);
return 0;
}
例如:
input one line string:
ABCD abcd 123 XYZ xyz -- 輸入
DEFG defg 123 ABC abc -- 輸出