【密碼學】2. 古典密碼

目錄

  • 2. 古典密碼
    • 2.1 經典加密技術基礎
    • 2.2 代換技術
      • 2.2.1 算術密碼
      • 2.2.2 代換密碼(Substitution Cipher)
    • 2.3 置換技術
    • 2.4 乘積密碼
    • 2.5 歷史上的教訓

2. 古典密碼

2.1 經典加密技術基礎

  1. 分類
    • 代換(Substitution):明文內容的表示形式改變(元素被替換),但元素相對位置不變(如明文字母被密文字母替代)。
    • 置換(Transposition/Permutation):明文元素的相對位置改變,但內容表示形式不變(僅重排順序)。
    • 乘積密碼(Product Ciphers):多個加密技術的疊加使用。
  2. 約定
    • 小寫字母表示明文,大寫字母表示密文。
    • 加密時通常舍棄標點、空格(因普通文本中空格占比 17%-18%,頻率過高易泄露信息)。

2.2 代換技術

2.2.1 算術密碼

  1. 移位密碼(凱撒密碼,Caesar Cipher)
    • 原理:由 Julius Caesar 提出,每個字母用字母表中其后第 k 個字母替代。
      • 加密:C=E(k,p)=(p+k)mod26C=E(k,p)=(p+k)mod26C=E(k,p)=(p+k)mod26
      • 解密:p=D(k,C)=(C?k)mod26p=D(k,C)=(C?k)mod26p=D(k,C)=(C?k)mod26
      • 部分文獻中凱撒密碼固定使用 k=3。
    • 示例:明文 “meet me after the toga party”,k=3 時,密文為 “PHHW PH DIWHU WKH WRJD SDUWB”。
    • 安全性:
      • 密鑰空間:26 個可能密鑰,僅 25 個可用(k=0 時密文與明文一致,無效)。
      • 易被窮舉攻擊:最壞需嘗試 25 次,平均 12.5 次。
  2. 仿射密碼(Affine Cipher)
    • 目的:擴大密鑰空間,映射關系簡單。
    • 原理:
      • 密鑰:(a,b)
      • 加密:C=E([a,b],p)=(ap+b)mod26C=E([a,b],p)=(ap+b)mod26C=E([a,b],p)=(ap+b)mod26
      • 解密:p=D([a,b],C)=((C?b)×a?1)mod26(a?1為a在模26下的逆元)p=D([a,b],C)=((C?b)×a^{?1})mod26(a^{?1}為a在模26下的逆元)p=D([a,b],C)=((C?b)×a?1)mod26a?1a在模26下的逆元)
    • 密鑰選取:
      • a≠1a ≠ 1a=1(否則退化為凱撒密碼),且需滿足 gcd(a,26)=1gcd(a,26)=1gcd(a,26)=1(保證一一映射,否則不同明文可能對應同一密文)。
      • 有效 a 值:3,5,7,9,11,15,17,19,21,23,25(共 11 個)。
    • 密鑰空間:11×26=286。

2.2.2 代換密碼(Substitution Cipher)

  1. 單表代換密碼(Monoalphabetic Cipher)
    • 原理:每個明文字母按固定密鑰(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
      • 密鑰:D K V Q F I B J W P E S C X H T M Y A U O L R G Z N
      • 明文 “ifwewishtoreplaceletters” 加密后為 “WIRFRWAJUHYFTSDVFSFUUFYA”(忽略空格)。
    • 密鑰空間:26!≈4×1026(部分密鑰含不動點,不可用)。
    • 輔助工具:惠斯通(Wheatstone)密碼,一種鐘表形式設備,1867 年巴黎世紀博覽會首次出現,通過旋轉指針和圓盤實現加密。
    • 安全性:
      • 短信息(長度小于密鑰)可能被窮舉攻擊;長信息因字母頻率不變(單表替換不改變字母出現頻率),易被頻率統計攻擊。
  2. 英語字母頻率特征(密碼破譯關鍵)
    • 單字母頻率:e 頻率最高(12.702%),其次為 t(9.056%)、a(8.167%)等;z、q、x、j 頻率接近 0。
    • 雙字母組合:最常見為 th、he、in、er、an 等。
    • 三字母組合:最常見為 the、ing、and、her 等。
    • 經典密碼破譯三要素:頻率特征(字母使用次數差異)、連接特征(前后字母關聯性,如 q 后幾乎必接 u)、重復特征(多字符字符串重復出現,如 th、tion)。
  3. 多表代換加密(Polyalphabetic Cipher)
    • 原理:使用多個單表代換,明文不同位置的字母用不同單表加密,以抵抗頻率統計攻擊。
  4. 維吉尼亞密碼(Vigenère Cipher)
    • 原理:最簡單的多表替換密碼,由多個凱撒替換表循環構成。
      • 密鑰:k=k0k1…kd?1(長度為d)k=k_0k_1…k_{d?1}(長度為 d)k=k0?k1?kd?1?(長度為d,第 i 位密鑰 kik_iki? 對應凱撒替換表 k=kik=k_ik=ki?,密鑰重復使用。
      • 加密:Ci=E(k,pi)=(pi+kimodd)mod26C_i=E(k,p_i)=(p_i+k_{i\ mod\ d})mod26Ci?=E(k,pi?)=(pi?+ki?mod?d?)mod26
      • 解密:pi=D(k,Ci)=(Ci?kimodd)mod26p_i=D(k,C_i)=(C_i?k_{i\ mod\ d})mod26pi?=D(k,Ci?)=(Ci??ki?mod?d?)mod26
    • 示例:密鑰 “deceptive”(d=9),明文 “wearediscoveredsaveyourself”,密文為 “ZICVTWQNGRZGVTWAVZHCQYGLMGJ”。
    • 安全性:字母頻率被模糊但未完全消失,可通過分組統計破解。
    • 破解方法:
      • 第一步確定密鑰長度 d:使用 Kasiski 方法,通過尋找密文中重復字段,計算其間距的最大公約數,即為 d(重復字段間距為 d 的整數倍)。
      • 第二步分組攻擊:將密文按位置 i、i+d、i+2d… 分組,每組對應同一單表,再用頻率統計攻擊破解各分組密鑰。

2.3 置換技術

  • 核心特點:通過重排字母順序隱藏信息,不改變字母表示形式(與代換技術的本質區別:代換改字母,置換改位置)。
  1. 柵欄技術(Rail Fence Cipher)
    • 原理:將明文按對角線方向寫成若干行,再按行輸出作為密文。
    • 示例:明文 “meet me after the toga party”,寫成兩行(m e m a t r h t g p r y 和 e t e f e t e o a a t),密文為 “MEMATRHTGPRYETEFETEOAAT”。
  2. 縱行換位(Row Transposition Cipher)
    • 原理:將明文按密鑰位數寫為若干列,再按密鑰順序輸出各列。
    • 示例:明文 “attack postponed until two am”,密鑰 “4 3 1 2 5 6 7”(7 位),明文按列排列后,按密鑰順序輸出列,密文為 “TTNAAPTMTSUOAODWCOIXKNLYPETZ”。

2.4 乘積密碼

  1. 原理:單純代換或置換安全性不足,連續使用多種加密技術(如交替代換和置換)可大幅提高安全性,是現代密碼構造的基本技術之一。
  2. 轉輪機(Rotor Machines)
    • 本質:機械時代最復雜的密碼機,核心是復雜的多表代換系統,通過多個轉輪實現,二戰廣泛應用(如德國 Enigma、盟軍 Hagelin、日本 Purple)。
    • 原理:包含多個圓柱體(轉輪),每個圓柱體代表一個代換表;每個字母加密后,轉輪旋轉,改變代換表。
    • 密鑰空間:3 個轉輪可提供263=17576個代換表。
  3. Enigma(謎)密碼機
    • 發展歷程:1918 年由德國 Arthur Scherbius 提出專利,1923 年帶反射板的 Enigma-A 問世,1926 年德國海軍開始采購,后發展出多種型號。
    • 結構:包含鍵盤、指示燈板、密鑰輪、反射板、接插板等,需 3 人操作(輸入明文、讀指示燈、記錄密文)。
    • 破譯關鍵:
      • 波蘭貢獻:1928 年獲得商業型 Enigma,1931 年通過 “灰燼先生”(漢斯?蒂洛?施密特)獲得操作手冊等;馬里安?雷耶夫斯基利用指標組(隨機 3 字母連續加密兩遍)構造字母循環圈,開發 “循環測定機” 和 “炸彈機”(Bomba),1939 年向英、法贈送仿制 Enigma 及技術。
      • 英國貢獻:1938 年布萊奇利莊園成為國家破譯中心,阿蘭?圖靈 1940 年設計 Bombe 機,針對指標組不再重復加密的情況,通過密文全文尋找明文 - 密文關聯破解。
      • 美國貢獻:1942 年 Joseph Desch 設計可破解四轉輪 Enigma 的機器,1943 年起交付海軍,最終 121 臺 Bombe 機每日破譯德國 Enigma 密鑰。
    • 教訓:軍民混用、叛徒與間諜影響、使用規則錯誤(主密鑰更新周期長、轉輪進位點固定)、對安全性過于自負(未及時銷毀設備、低估對手)等。

2.5 歷史上的教訓

  1. Kerckhoff 原則:密碼安全性不應依賴算法保密,而應依賴密鑰;敵方可能知曉算法,需假設算法公開下仍安全。
  2. 不可低估對手能力:“不可能被攻破” 的密碼常被破譯(如 DES,1973 年預計需數十年破譯,1999 年 22.25 小時即可破解)。
  3. 密碼安全性評估:
    • 僅靠密鑰組合數評估安全性是片面的(上限為窮舉攻擊難度),需公開接受全球研究和攻擊檢驗。
    • 表面復雜性可能降低安全性(如禁止字母加密為自身,反而減少攻擊者工作量)。
  4. 隨機數重要性:隨機數生成是密碼關鍵,二戰日軍曾用編織籃抽紙條(寫四位數字)產生隨機數。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92538.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92538.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92538.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSS3文本陰影特效全攻略

CSS3文本陰影效果實現 下面我將創建一個展示各種CSS3文本陰影效果的頁面&#xff0c;包含多種樣式示例和代碼實現。 設計思路 創建具有視覺吸引力的標題區域提供多種文本陰影效果實例顯示對應的CSS代碼以供參考添加交互元素讓用戶自定義效果 實現代碼 <!DOCTYPE html&g…

JavaScript 03 嚴格檢查模式Strict字符串類型詳解

2.4 嚴格檢查模式Strict在 JavaScript 里&#xff0c;也是 有 “作用域” 這個說法的。 所以說&#xff0c;變量 也分 全局變量 和 局部變量。 當我們 直接 把 代碼 寫在 script 雙標簽里面的時候&#xff0c;我們 JS 會認為 這只是 一個 沒有名字的 函數&#xff01;&#xff…

車載診斷ECU架構

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

使用vue-pdf-embed發現某些文件不顯示內容

在使用vue-pdf-embed過程中, 突然發現有些pdf文件可以正常打開, 有些文件只顯示了一些數字, 并且控制臺報出如下警告: Warning: loadFont - translateFont failed: “UnknownErrorException: Ensure that the cMapUrl and cMapPacked API parameters are provided.”. Warning…

【設計模式C#】狀態模式(用于解決解耦多種狀態之間的交互)

一種行為設計模式。特點是用類的方式去管理狀態。優點&#xff1a;對每個狀態進行了封裝&#xff0c;提高了代碼的可維護性&#xff1b;減少了條件判斷語句的使用&#xff0c;降低維護成本&#xff1b;易于擴展&#xff0c;每次新增狀態都無需大規模修改其他類&#xff0c;符合…

WebSocket數據通過splice保持現有DOM結構僅更新文本內容?【防閃爍】。

文章目錄 前言 一、DOM更新優化機制 ?1.虛擬DOM復用性 2.?響應式系統觸發 二、性能對比 三、WebSocket場景實踐 ?1.防閃爍原理 2.代碼實現示例 四、特殊注意事項 總結 前言 開發過程中渲染websocket返回的數據時&#xff0c;經常會遇到更新數據閃爍的問題&#xff0c;咱們可…

深入解析Hadoop的Block多副本同步機制與Pipeline復制

Hadoop分布式文件系統概述作為Hadoop生態的核心存儲組件&#xff0c;HDFS&#xff08;Hadoop Distributed File System&#xff09;的設計哲學源于Google File System論文&#xff0c;其架構專門針對大規模數據集處理場景進行了優化。在理解Block多副本同步機制之前&#xff0c…

洪水預報中的序列到序列模型及其可解釋性擴展

洪水預報中的序列到序列模型及其可解釋性擴展 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家&#xff0c;覺得好請收藏。點擊跳轉到網站。 1. 引言 洪水預報是水文科學和災害管理中的重要課題&#xff…

UniApp 優化實踐:使用常量統一管理本地存儲 Key,提升可維護性

在 UniApp 項目開發中&#xff0c;隨著功能的增加&#xff0c;本地存儲&#xff08;如 uni.setStorageSync&#xff09;的使用頻率也會增加。如果直接在代碼中硬編碼 key 值&#xff0c;不僅容易出錯&#xff0c;也難以后期維護。本文將以“自定義導航欄適配狀態欄高度”為例&a…

計算機網絡:(八)網絡層(中)IP層轉發分組的過程與網際控制報文協議 ICMP

計算機網絡&#xff1a;&#xff08;八&#xff09;網絡層&#xff08;中&#xff09;IP層轉發分組的過程與網際控制報文協議 ICMP前言一、IP層轉發分組的過程第一步&#xff1a;接收數據包并解封裝第二步&#xff1a;提取目標 IP 地址第三步&#xff1a;查詢路由表第四步&…

Python爬蟲實戰:研究concurrent-futures庫相關技術

1. 引言 1.1 研究背景與意義 網絡爬蟲作為互聯網數據采集的重要工具,在信息檢索、輿情分析、學術研究等領域具有廣泛應用。隨著互聯網數據量的爆炸式增長,傳統單線程爬蟲的效率已難以滿足需求,并發爬蟲技術成為研究熱點。 1.2 相關工作 現有爬蟲框架如 Scrapy、Beautifu…

Neo4j 框架 初步簡單使用(基礎增刪改查)

Neo4j 是一個高性能的、開源的圖數據庫。它將數據存儲為圖結構&#xff0c;其中節點表示實體&#xff0c;邊表示實體之間的關系。這種圖數據模型非常適合處理復雜的關系型數據&#xff0c;能夠高效地進行關系查詢和遍歷。 Neo4j 的主要特性包括&#xff1a; 強大的圖查詢語言 C…

【iOS】鎖[特殊字符]

文章目錄前言1??什么是鎖&#x1f512;&#xff1f;1.1 基本概念1.2 鎖的分類2??OC 中的常用鎖2.1 OSSpinLock&#xff08;已棄用&#xff09;&#xff1a;“自旋鎖”的經典代表為什么盡量在開發中不使用自旋鎖自旋鎖的本質缺陷&#xff1a;忙等待&#xff08;Busy Waiting…

在easyui中如何設置自帶的彈窗,有輸入框

這個就是帶input的確認彈框&#xff08;$.messager.prompt&#xff09;// 使用prompt并添加placeholder提示 $.messager.prompt(確認, 確定要將事故記錄標記為 statusText 嗎&#xff1f;, function(r) {if (r) {// r 包含用戶輸入的內容var remark r.trim();// 驗證輸入不為…

Android-API調用學習總結

一、Postman檢查API接口是否支持1.“HTTP Request” 來創建一個新的請求。——請求構建界面&#xff0c;這是你進行所有 API 調用的地方。2.設置請求方法和 URL&#xff1a;選擇請求方法&#xff1a; 在 URL 輸入框左側&#xff0c;有一個下拉菜單。點擊它&#xff0c;選擇你想…

《計算機網絡》實驗報告一 常用網絡命令

目 錄 1、實驗目的 2、實驗環境 3、實驗內容 3.1 ping基本用法 3.2 ifconfig/ipconfig基本用法 3.3 traceroute/tracert基本用法 3.4 arp基本用法 3.5 netstat基本用法 4、實驗結果與分析 4.1 ping命令的基本用法 4.2 ifconfig/ipconfig命令的基本用法 4.3 tracer…

MySQL深度理解-深入理解MySQL索引底層數據結構與算法

1.引言在項目中會遇到各種各樣的慢查詢的問題&#xff0c;對于千萬級的表&#xff0c;如果使用比較笨的查詢方式&#xff0c;查詢一條SQL可能需要幾秒甚至幾十秒&#xff0c;如果將索引設置的比較合理&#xff0c;可以將查詢變得仍然非常快。2.索引的本質索引&#xff1a;幫助M…

Django母嬰商城項目實踐(九)- 商品列表頁模塊

9、商品列表頁模塊 1、業務邏輯 商品模塊分為:商品列表頁 和 商品詳情頁 商品列表頁將所有商品按照一定的規則排序展示,用于可以從銷量、價格、上架時間和收藏數量設置商品的排序方式,并且在商品左側設置分類列表,選擇某一個分類可以篩選出對應的商品信息。 商品列表頁…

8、STM32每個系列的區別

1、F1和F4的系列的區別 F1采用Crotex M3內核&#xff0c;F4采用Crotex M4內核。F4比F1的主頻高。F4具有浮點數運算單元&#xff0c;F1沒有浮點單元。F4的具備增強的DSP指令集。F407的執行16位DSP指令的時間只有F1的30%~70%。F4執行32位DSP指令的時間只有F1的25% ~ 60%。F1內部S…

DeepSPV:一種從2D超聲圖像中估算3D脾臟體積的深度學習流程|文獻速遞-醫學影像算法文獻分享

Title題目DeepSPV: A deep learning pipeline for 3D spleen volume estimation from 2Dultrasound imagesDeepSPV&#xff1a;一種從2D超聲圖像中估算3D脾臟體積的深度學習流程01文獻速遞介紹1.1 臨床背景 脾腫大指脾臟增大&#xff0c;是多種潛在疾病的重要臨床指標&#x…