主頁 >  其他 > 讀改變未來的九大演算法筆記03_糾錯碼

讀改變未來的九大演算法筆記03_糾錯碼

2023-06-05 07:58:43 其他

1. 真正根源

1.1. 在電報和電話等通信系統中出現的

1.2. 理查德·漢明創造了第一批糾錯碼:一種近乎神奇的能偵測并糾正計算機資料中錯誤的演算法

2. 資訊理論學的一部分

2.1. Information Theory

2.2. 香農通過數學展示了有可能從根本上通過一個嘈雜的、引發錯誤的鏈接實作錯誤率極低的通信

2.3. 即便是極端不可靠的通信頻道也可以以極低的錯誤率傳輸資料

2.4. 沒有糾錯碼,計算機和通信系統就會比現在慢很多,功能弱許多,可靠性也會差很多

3. 計算機三項基本作業

3.1. 執行計算

3.2. 存盤資料

3.3. 傳輸資料

4. 錯誤偵測及糾正的需求

4.1. 計算機要無誤地存盤和傳輸的資訊量絕對是海量

4.2. 精確度達到99.999 9%也還是不夠好

4.3. 必須能在存盤和傳輸數十億“塊”資訊的情況下,不犯任何一個錯誤

5. 雜項

5.1. overhead

5.2. 為確保訊息被正確接收而發送的多余資訊

5.3. 一個糾錯系統的“雜項”就是在發送訊息本身以外要發送的額外資訊量

6. 重復把戲

6.1. 同時偵測和糾正資料中錯誤的方法

6.2. 要確保一些資訊被正確地傳輸,只需重復幾次該資訊

6.3. 通過重復一條不可靠的訊息足夠多次,就可以讓訊息的可靠性高到讓你滿意為止

6.4. 假設錯誤隨機發生,相反,如果一個惡意物體故意干擾傳輸,并選擇制造某些錯誤,重復把戲都會變得不可靠

6.5. 通過使用重復把戲,不可靠通信的問題能夠被解決,錯誤基本上能被消滅

6.6. 你發送的額外東西就是更多份原始訊息

6.6.1. 雜項數量巨大,因為必須發送數份完整訊息

7. 代碼字

7.1. code words

7.2. 示例

7.2.1. “one”(一)、“two”(二)、“three”(三)

8. 冗余把戲

8.1. The Redundany Trick

8.2. 同時偵測和糾正資料中錯誤的方法

8.3. 基本原則

8.3.1. 你不能只發送原始訊息,你要發送一些多余的東西以增加可靠性

8.4. 示例

8.4.1. “5 213.75”

8.4.1.1. five two one three point seven five

8.4.1.2. fiqe kwo one thrxp point sivpn fivq

8.4.1.3. 使用了一條冗余訊息,所以對訊息中的任何單個變化進行可靠偵測及糾正變得可行

8.4.2. 數字“367”代表了一個數

8.4.2.1. 因為這條訊息中沒有冗余,其中一個數字被替換,就沒辦法知道原始數字是多少

8.5. (7,4)漢明代碼(Hamming code)

8.5.1. 理查德·漢明于1947年在貝爾實驗室發明的代碼之一

8.5.2. 所有事情都通過0和1完成

8.5.2.1. 現實生活中使用的所有代碼也限用這兩個數字

8.5.3. 在編碼時,每一組4位數字都加入了冗余,由此產生了一個7位數的代碼字

8.5.4. 在解碼時,你首先要為接收的7位數尋找完全匹配,如果尋找完全匹配失敗,就選擇最接近的匹配

8.5.5. 7位數代碼字中的任何錯誤都能得到確定無疑的糾正

8.5.6. 只能糾正7位數代碼字中的一個錯誤

9. 校驗和把戲

9.1. 不管糾錯,而是將精力集中在偵測錯誤上

9.2. The Checksum Trick

9.3. “check”(校驗)訊息的“sum”(和)就是術語“checksum”(校驗和)的由來

9.4. 假設我們所有的訊息都只由數字組成會更方便些

9.4.1. 這是一個非常真實的假設,因為計算機用數字存盤所有的資訊,只有在向人展示資訊時,才把數字轉譯成文本或影像

9.5. 簡單校驗和

9.5.1. Simple Checksum

9.5.2. 只需將訊息中的所有數字相加,只保留結果的最后一位數,剩下的數字就是你的簡單校驗和

9.5.3. 只需在發送原始訊息前,將原始訊息的校驗和附加到訊息末尾即可

9.5.4. 如果只有一個錯誤,簡單校驗和絕對能保證偵測到它

9.5.5. 兩個或更多錯誤,簡單校驗和或許能偵測到它們,但也有可能偵測不到

9.5.6. 示例

9.5.6.1. 4 6 7 5 6

9.5.6.2. 4+6+7+5+6=28

9.5.6.3. 只保留最后一位數8

9.5.6.4. 4 6 7 5 6 8

9.5.7. 只能保證對相對較短的訊息奏效(少于10位數)

9.6. 階梯校驗和

9.6.1. Staircase Checksum

9.6.2. 像之前一樣把數字相加,但每個數都要和該數字所在位階數相乘,每個數都比前一個數大一個位階

9.6.2.1. 樓梯臺階編號為1、2、3……依此類推

9.6.3. 示例

9.6.3.1. 4 6 7 5 6

9.6.3.2. (1×4)+(2×6)+(3×7)+(4×5)+(5×6)=4+12+21+20+30=87

9.6.3.3. 只保留最后一位數7

9.6.3.4. 4 6 7 5 6 7

9.6.4. 只能保證對相對較短的訊息奏效(少于10位數)

9.7. 首先是簡單校驗和,其次是階梯校驗和

9.7.1. 4 6 7 5 6

9.7.2. 4 6 7 5 6 8 7

9.7.3. 可以保證這條訊息要么是正確的,要么至少有三處錯誤

9.7.4. 只要錯誤不超過兩處,你就都能夠偵測到錯誤

9.7.5. 只能保證對相對較短的訊息奏效(少于10位數)

9.8. 加密哈希函式(Cryptographic Hash Function)的特定校驗和

9.8.1. 軟體包的校驗和比不上軟體包大小的十萬之一

9.8.2. 使用這種長度的校驗和偵測錯誤,其失敗的概率極其微小,在現實中幾乎不可能失敗

9.8.2.1. 尤其是在惡意敵人而非糟糕信道的隨機變動對資訊做出改變時

10. 定位把戲

10.1. The Pinpoint Trick

10.1.1. 能讓你迅速定位一處錯誤

10.2. 二維奇偶校驗碼

10.2.1. Two-Dimensional Parity

10.2.2. 被形容為二維,是因為訊息被放在有兩個維度的表格(行和列)中

10.3. 如果你有一條長訊息,就將其打碎成16位數長的“塊”,并單獨處理每“塊”資料

10.4. 如果訊息比16個數字短,就用0把它補成16位數

10.5. 示例

10.5.1. 4 8 3 7 5 4 3 6 2 2 5 6 3 9 9 7

10.5.2.

4 8 3 7

5 4 3 6
2 2 5 6
3 9 9 7

10.5.2.1. 重新排列成一個從左往右、自上向下讀的方框

10.5.3.

4 8 3 7 2

5 4 3 6 8
2 2 5 6 5
3 9 9 7 8

10.5.3.1. 算每一行的校驗和,并添加在每行的右側

10.5.4.

4 8 3 7 2

5 4 3 6 8
2 2 5 6 5
3 9 9 7 8
4 3 0 6

10.5.4.1. 算每一欄的簡單校驗和,并將其添加在每列的底部

10.5.5. 4 8 3 7 2 5 4 3 6 8 2 2 5 6 5 3 9 9 7 8 4 3 0 6

10.5.5.1. 重新排列所有數,讓其能以一次一個數的方式被存盤或傳輸

10.5.5.2. 從左往右、自上向下的方式讀數

10.5.6. 4 8 3 7 2 5 4 3 6 8 2 7 5 6 5 3 9 9 7 8 4 3 0 6

10.5.7.

4 8 3 7 2 2

5 4 3 6 8 8
2 7 5 6 5 0
3 9 9 7 8 8
4 3 0 6
4 8 0 6

10.5.7.1. 不同之處的位置正好說明了通信錯誤出現的位置

10.5.7.2. 錯誤同時被定位和糾正了

11. 里德–所羅門(Reed-Solomon)代碼

11.1. 能被用來糾正每個代碼字中的眾多錯誤

11.2. 基于一個名為有限域代數(Finite Field Algebra)的數學分支,結合了階梯校驗和及二維定位把戲的特色

11.3. CD、DVD和計算機硬碟中都用到了

12. 現實中的運用

12.1. 一般用于偵測而非糾正錯誤

12.2. 以太網

12.2.1. CRC-32

12.3. 軟體包

12.3.1. MD5

12.3.1.1. 約40位數

12.3.2. SHA-1

12.3.2.1. 約50位數

12.3.3. SHA-256

12.3.3.1. 約75位數

12.3.4. SHA-512

12.3.4.1. 約150位數

12.4. 低密度奇偶校驗碼(Low-Density Parity-check Codes)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554276.html

標籤:其他

上一篇:sakuya726's 2023 ICPC China SiChuan Provincial Programming Contest(ICPC2023四川省賽)游記隨筆

下一篇:返回列表

標籤雲
其他(160329) Python(38201) JavaScript(25475) Java(18185) C(15236) 區塊鏈(8269) C#(7972) AI(7469) 爪哇(7425) MySQL(7231) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5346) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4582) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2434) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1981) 功能(1967) HtmlCss(1952) Web開發(1951) C++(1928) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1879) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 讀改變未來的九大演算法筆記03_糾錯碼

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230603212129621-1179098022.png) # 1. 真正根源 ## 1.1. 在電報和電話等通信系統中出現的 ## 1.2. 理查德·漢明創造了第一批糾錯 ......

    uj5u.com 2023-06-05 07:58:43 more
  • sakuya726&#39;s 2023 ICPC China SiChuan Provincial Programmi

    2023.6.2 出發前一天,收拾東西做好準備作業。列印了自己記憶中所有高級資料結構的板子(然而實際上并沒有卵用),VP一把往年的四川省賽。 2023.6.3 不出意外的失眠了,早上九點四十的火車,凌晨五點才睡覺。七點半出發去火車站,天還下著雨,剛開始感徑訓挺有意境,然后當我在雨中等我隊友等了足足四 ......

    uj5u.com 2023-06-05 07:58:15 more
  • git checkout switch restore

    ## 前言 在 Git 術語中,“checkout”是在目標物體的不同版本之間切換的行為。該命令對三個不同的物體進行操作:檔案、提交和分支。除了“checkout”的定義之外,短語“檢出”通常用于表示執行命令的行為。在[撤消更改](https://www.atlassian.com/git/tuto ......

    uj5u.com 2023-06-05 07:57:43 more
  • Tengine 入門實戰(2)--簡單使用

    本文主要介紹 Tengine 的主動式后端服務器健康檢查的擴展功能,其他的擴展功能可參考官網檔案:http://tengine.taobao.org/;文中所使用到的軟體版本:Centos 7.9.2009、Tengine 2.3.3。 1、相關指令 1.1、check Syntax: check ......

    uj5u.com 2023-06-05 07:57:37 more
  • 自我的創建

    分享下今天看到的一些知識,也不算是知識吧.更多的是對自己的一種認識.我從自身的經歷來劃分的幾個階段,來展示自我的發展方式,這個只是針對在幼年時的狀態 之所以稱為完美的,是因為各種方向基本可以確定,很容易找到邊界,成長起來相對穩定 這種缺失,影響并不是很大,缺失一條邊界后,可以利用自我探索的方式進行補 ......

    uj5u.com 2023-06-05 07:56:45 more
  • 槍決通知短信:網路欺詐的新變種與社會責任

    ## 一、引言 在當今數字化世界,資訊傳播的速度和范圍已經達到了前所未有的高度,然而,這種便捷的通訊方式也為不法分子提供了便利。近期,有很多人收到了所謂的“槍決通知短信”,引起了社會的廣泛關注。本文將對這一現象進行剖析,并討論如何防范和應對這種網路欺詐行為,以及社會各界在其中應承擔的責任。 ## 二 ......

    uj5u.com 2023-06-05 07:56:03 more
  • Web安全-滲透測驗-基礎知識02

    # 資料包 ## 通信程序 - 無代理服務器 ![image](https://img2023.cnblogs.com/blog/2906024/202306/2906024-20230604214617995-418277397.png) Request 請求資料包 Reponse 相應資料包 - ......

    uj5u.com 2023-06-05 07:55:46 more
  • 域用戶列舉和密碼噴灑攻擊橫向移動

    # 域用戶列舉和密碼噴灑攻擊橫向移動 [TOC] ## 一、域內用戶列舉攻擊原理 正常域用戶登錄主機,我們可以通過 "net user /domain"來列舉出域內的用戶。但是當我們用非域用戶進行登錄時,是不能使用 "net user /domain"這條命令的。或者當主機不在域內但是能與域控通信時 ......

    uj5u.com 2023-06-05 07:54:17 more
  • NSSCTF Round#13 web專項

    ### rank:3 ## flask?jwt? 簡單的注冊個賬號,在`/changePassword ` 下查看頁面源代碼發現密鑰`` ,很好,老套路了,flask-session-cookie-manager偽造,把`_user_id` 改成1,訪問`/getFlag` ,拿到flag ## e ......

    uj5u.com 2023-06-05 07:54:06 more
  • Web安全-滲透測驗-基礎知識01

    # 1.域名 >**定義:**域名(英語:Domain Name),又稱網域,是由一串用點分隔的名字組成的互聯網上某一臺計算機或計算機組的名稱,用于在資料傳輸時對計算機的定位標識. 因為ip地址不方便記憶.而且不能顯示地址組織的名稱和性質,所以用域名也可以定位到回應的up,可簡單理解為是ip地址的另 ......

    uj5u.com 2023-06-05 07:53:34 more