日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Enigma机加密

發(fā)布時(shí)間:2025/3/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Enigma机加密 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

二戰(zhàn)時(shí)期,德軍使用了一套名為Enigma的密碼系統(tǒng),是一種基于字符映射的密碼系統(tǒng)。它的工作原理如下:

使用者從鍵盤按下一個(gè)字母后,字母會(huì)先經(jīng)過(guò)三個(gè)可以轉(zhuǎn)動(dòng)的輪盤,稱為轉(zhuǎn)子,每個(gè)轉(zhuǎn)子就是一個(gè)字符映射表。如:

一個(gè)轉(zhuǎn)子的輸出作為下一個(gè)轉(zhuǎn)子的輸入。當(dāng)經(jīng)過(guò)第三個(gè)轉(zhuǎn)子后,輸出會(huì)被送入到一個(gè)反射器。反射器和轉(zhuǎn)子一樣,區(qū)別在于不能轉(zhuǎn)動(dòng),且映射是對(duì)稱的,即如果輸入c1會(huì)輸出c2,那么輸入c2將輸出c1。經(jīng)過(guò)反射器后,字母會(huì)依次反向進(jìn)入三個(gè)轉(zhuǎn)子,并最終顯示在顯示盤上。至此算完成了一個(gè)字母的加密。當(dāng)加密下一個(gè)字母時(shí),第一個(gè)轉(zhuǎn)子會(huì)轉(zhuǎn)動(dòng)一格,轉(zhuǎn)子的轉(zhuǎn)動(dòng)代表著映射表發(fā)生變化。

當(dāng)轉(zhuǎn)子轉(zhuǎn)動(dòng)一周再次回到初始位置時(shí),會(huì)帶動(dòng)第二個(gè)轉(zhuǎn)子轉(zhuǎn)動(dòng)一格,同理第二個(gè)轉(zhuǎn)動(dòng)一周后,會(huì)帶動(dòng)第三個(gè)轉(zhuǎn)子轉(zhuǎn)動(dòng)。(第三個(gè)轉(zhuǎn)子本題中不考慮。)

本題中的三個(gè)轉(zhuǎn)子和反射器的結(jié)構(gòu)如下:

轉(zhuǎn)子A:QAZWSXEDCRFVTGBYHNUJMIKOLP

轉(zhuǎn)子B:QWERTYUIOPASDFGHJKLZXCVBNM

轉(zhuǎn)子C:QETUOADGJLZCBMWRYIPSFHKXVN

反射器:ZYXWVUTSRQPONMLKJIHGFEDCBA

使用時(shí)三個(gè)轉(zhuǎn)子也可拆卸自由調(diào)節(jié)順序,也就是說(shuō)加密操作前的初始狀態(tài)會(huì)有26--2626*3!種。我們用6位字母來(lái)記錄初始狀態(tài),并稱為密鑰。1-3位記錄三個(gè)的轉(zhuǎn)子的排列順序(如BAC表示B轉(zhuǎn)子放在最靠近鍵盤的位置)。4-6位記錄三個(gè)轉(zhuǎn)子的初始位置(如XYZ表示最靠近鍵盤的轉(zhuǎn)子初始位置在X上)。

現(xiàn)在提供你一串密文和密鑰,請(qǐng)給出它的原文。

輸入
第一行輸入整數(shù)n(0<n<10000),代表測(cè)試用例的數(shù)量。

接下來(lái)每個(gè)用例由兩行組成,第一行由六個(gè)大定字母組成,表示密鑰。第二行為待解密字符串,由大寫字母組成,長(zhǎng)度不超過(guò)10000。

輸出
每一行輸出解密后的明文。

樣例輸入
1
ABCXYZ
ZDBSF
樣例輸出
HELLO

這個(gè)模擬題實(shí)現(xiàn)方面來(lái)說(shuō)不難,但是題意很難理解。。。。
想必從輸入字符依次經(jīng)過(guò)三個(gè)轉(zhuǎn)子到反射器的地方大家都能明白,但是從反射器反向經(jīng)過(guò)三個(gè)轉(zhuǎn)子的地方有點(diǎn)難理解。

以下是樣例中ABCXYZ密鑰的字母對(duì)照表,方便查看
正常順序的字母表:
1A 2B 3C 4D 5E 6F 7G 8H 9I 10J 11K 12L 13M 14N 15O 16P 17Q 18R 19S 20T 21U 22V 23W 24X 25Y 26Z

第一個(gè)轉(zhuǎn)子:

1X 2E 3D 4C 5R 6F 7V 8T 9G 10B 11Y 12H 13N 14U 15J 16M 17I 18K 19O 20L 21P 22Q 23A 24Z 25W 26S

第二個(gè)轉(zhuǎn)子:

1Y 2U 3I 4O 5P 6A 7S 8D 9F 10G 11H 12J 13K 14L 15Z 16X 17C 18V 19B 20N 21M 22Q 23W 24E 25R 26T

第三個(gè)轉(zhuǎn)子:

1Z 2C 3B 4M 5W 6R 7Y 8I 9P 10S 11F 12H 13K 14X 15V 16N 17Q 18E 19T 20U 21O 22A 23D 24G 25J 26L

反射器:

1Z 2Y 3X 4W 5V 6U 7T 8S 9R 10Q 11P 12O 13N 14M 15L 16K 17J 18I 19H 20G 21F 22E 23D 24C 25B 26A

那樣例輸入的HELLO的H為例,當(dāng)H經(jīng)過(guò)三個(gè)轉(zhuǎn)子傳入反射器的時(shí)候變?yōu)樽帜竂,反射器傳出C,此時(shí)就要倒推回去。X在反射器中是第3個(gè)字母,在正常順序字母表中第3個(gè)字母是C,所以尋找C在第三個(gè)轉(zhuǎn)子中的位置,為2。正常順序中第2個(gè)字母為B,所以尋找第二個(gè)轉(zhuǎn)子中B的位置,為19。正常順序第19個(gè)字母是S,那么在第一個(gè)轉(zhuǎn)子中尋找S,為26。那么正常順序中第26個(gè)字母為Z,因此加密出來(lái)的字母是Z

然后就按照題目的意思來(lái),每加密一個(gè)字母第一個(gè)轉(zhuǎn)子轉(zhuǎn)動(dòng)一格,第一轉(zhuǎn)子轉(zhuǎn)動(dòng)一圈帶動(dòng)第二轉(zhuǎn)子。。。。。

總結(jié)

以上是生活随笔為你收集整理的Enigma机加密的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。