• 正文
    • 安全和算法
    • 聚類
    • 其他算法
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

算法與數(shù)據(jù)結(jié)構(gòu)無廢話筆記(四)

2024/05/11
1121
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

??算法與數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)專業(yè)學(xué)生的必修課,基礎(chǔ)中的基礎(chǔ),所以快速上手,找到學(xué)習(xí)方向和感覺十分重要。我在學(xué)習(xí)過程中遇到一本好書,《我的第一本算法書》,把算法講得很淺顯易懂,所以基于這本書的內(nèi)容,提煉出其中的精華,再加上個(gè)人的理解,旨在把最干的干貨分享給大家。推薦大家去閱讀原書!

安全和算法

通過互聯(lián)網(wǎng)交換數(shù)據(jù)時(shí),數(shù)據(jù)要經(jīng)過各種各樣的網(wǎng)絡(luò)和設(shè)備才能傳到對方那里。數(shù)據(jù)在傳輸過程中有可能會(huì)經(jīng)過某些惡意用戶的設(shè)備,從而導(dǎo)致內(nèi)容被盜取。

因此,要想安全地使用互聯(lián)網(wǎng),安全技術(shù)是不可或缺的。本章將要學(xué)習(xí)的就是保障安全的 各種算法和利用了這些算法的機(jī)制。

在這里插入圖片描述

這些問題不光發(fā)生在用戶之間交流的時(shí)候,也有可能發(fā)生在用戶瀏覽網(wǎng)頁的時(shí)候。

在這里插入圖片描述
“數(shù)字簽名”技術(shù)存在“無法確認(rèn)公開密鑰的制作者”這一問題。要想解決這個(gè)問題,可以使用“數(shù)字證書”技術(shù)。

加密的基礎(chǔ)知識(shí)

在現(xiàn)代互聯(lián)網(wǎng)社會(huì)中,加密技術(shù)變得十分重要。給想要保密的數(shù)據(jù)加密。加密后的數(shù)據(jù)被稱為“密文”。把密文發(fā)送給B。B收到密文后,需要解除加密才能得到原本的數(shù)據(jù)。把密文恢復(fù)為原本數(shù)據(jù)的操作就叫作“解密”。

在這里插入圖片描述

計(jì)算機(jī)會(huì)用由 0 和 1 這兩個(gè)數(shù)字表示的二進(jìn)制來管理所有數(shù)據(jù)。如上圖所示,數(shù)據(jù)雖然有文本、音頻、圖像等不同的形式,但是在計(jì)算機(jī)中都是用二進(jìn)制來表示的。

對計(jì)算機(jī)來說,數(shù)據(jù)就是一串有意義的數(shù)字羅列。密文也是數(shù)字羅列,只不過它是計(jì)算機(jī)無法理解的無規(guī)律的數(shù)字羅列。也就是說,加密就是數(shù)據(jù)經(jīng)過某種運(yùn)算后,變成計(jì)算機(jī)無法理解的數(shù)的過程。

在加密運(yùn)算上會(huì)用到“密鑰”。所以加密就是用密鑰對數(shù)據(jù)進(jìn)行數(shù)值運(yùn)算,把數(shù)據(jù)變成第三者無法理解的形式的過程。反過來,解密就是通過密鑰進(jìn)行數(shù)值計(jì)算,把密文恢復(fù)成原本數(shù)據(jù)的過程。

哈希函數(shù)?。。?/span>

哈希函數(shù)可以把給定的數(shù)據(jù)轉(zhuǎn)換成固定長度的無規(guī)律數(shù)值。轉(zhuǎn)換后的無規(guī)律數(shù)值可以作為數(shù)據(jù)摘要應(yīng)用于各種各樣的場景。輸出的無規(guī)律數(shù)值就是“哈希值”。哈希值雖然是數(shù)字,但多用十六進(jìn)制來表示。

六特征

  1. 輸出的哈希值數(shù)據(jù)長度不變。
  2. 輸入相同則輸出相同(同一個(gè)算法下)。
  3. 輸入相似的數(shù)據(jù)并不會(huì)導(dǎo)致輸出的哈希值也相似。
  4. 即使輸入的兩個(gè)數(shù)據(jù)完全不同,輸出的哈希值也有可能是相同的,雖然出現(xiàn)這種情況的概率比較低。這種情況叫作“哈希沖突”。
  5. 求哈希值的計(jì)算容易。
  6. 反算不可能,不可能從哈希值反向推算出原本的數(shù)據(jù)。

在這里插入圖片描述

在這里插入圖片描述

共享密鑰加密

共享密鑰加密是加密和解密都使用相同密鑰的一種加密方式。由于使用的密鑰相同,所以這種算法也被稱為“對稱加密”。

我們先從整體上來了解一下共享密鑰加密的處理流程。假設(shè) A 準(zhǔn)備通過互聯(lián)網(wǎng)向 B 發(fā)送數(shù)據(jù)。由于有被竊聽的風(fēng)險(xiǎn),所以需要把想要保密的數(shù)據(jù)加密后再發(fā)送。A使用密鑰加密數(shù)據(jù)。A將密文發(fā)送給B。B收到密文后,使用相同的密鑰對其進(jìn)行解密。這樣,B就取得了原本的數(shù)據(jù)。只要是加密好的數(shù)據(jù),就算被第三者惡意竊聽也無須擔(dān)心。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

公開密鑰加密

公開密鑰加密是加密和解密使用不同密鑰的一種加密方法。由于使用的密鑰不同,所以這種算法也被稱為“非對稱加密”。加密用的密鑰叫作“公開密鑰”,解密用的叫作“私有密鑰”。

在這里插入圖片描述

然后把公開密鑰發(fā)送給A。A使用B發(fā)來的公開密鑰加密數(shù)據(jù)。A 將密文發(fā)送給 B,B 再使用私有密鑰對密文進(jìn)行解密。這樣,B就得到了原本的數(shù)據(jù)。

在這里插入圖片描述

公開密鑰和密文都是通過互聯(lián)網(wǎng)傳輸?shù)?,因此可能?huì)被 X 竊聽。但是,使用公開密鑰無法解密密文,因 此X也無法得到原本的數(shù)據(jù)!多人傳輸時(shí),超級(jí)方便!

在這里插入圖片描述

但是?。。?strong>道高一尺魔高一丈!

在B把公開密鑰PB發(fā)給A的時(shí)候,X把公開密鑰PB替換成自己的公開密鑰PX, 于是公開密鑰PX傳到了A那里。

在這里插入圖片描述

整個(gè)過程沒有任何問題,B和A都不知道自己被假冒和竊聽了。

這種通過中途替換公開密鑰來竊聽數(shù)據(jù)的攻擊方法叫作“中間人攻擊”(man-in-the-middle attack)。

在這里插入圖片描述

在這里插入圖片描述

混合加密

共享密鑰加密存在無法安全傳輸密鑰的密鑰分配問題,公開密鑰加密又存在加密解密速度較慢的問題。結(jié)合這兩種方法以實(shí)現(xiàn)互補(bǔ)的一種加密方法就是混合加密。

在混合加密中,要用處理速度較快的共享密鑰加密對數(shù)據(jù)進(jìn)行加密。不過,加密時(shí)使用的密鑰,則需要用沒有密鑰分配問題的公開密鑰加密進(jìn)行處理。 就是頻繁傳輸?shù)臄?shù)據(jù),用共享密鑰加密傳輸,但是第一次傳密鑰時(shí),用公開密鑰加密傳輸。

在這里插入圖片描述

迪菲 - 赫爾曼密鑰交換

迪菲 - 赫爾曼(Diffie-Hellman)密鑰交換是一種可以在通信雙方之間安全交換密鑰的方法。這種方法通過將雙方共有的秘密數(shù)值隱藏在公開數(shù)值相關(guān)的運(yùn)算中,來實(shí)現(xiàn)雙方之間密鑰的安全交換。很絕的一個(gè)方法

假設(shè)有一種方法可以合成兩個(gè)密鑰。使用這種方法來合成密鑰P和密鑰S,就會(huì)得到由這兩個(gè)密鑰的成分所構(gòu)成的密鑰P-S。這種合成方法有三個(gè)特征:

  1. 即使持有密鑰P和合成的密鑰P-S,也無法把密鑰S單獨(dú)取出來。
  2. 不管是怎樣合成而來的密鑰,都可以把它作為新的元素,繼續(xù)與別的密鑰進(jìn)行合成。
  3. 密鑰的合成結(jié)果與合成順序無關(guān),只與用了哪些密鑰有關(guān)。

在這里插入圖片描述

流程:

首先由A生成密鑰P。然后A把密鑰P發(fā)送給B。接下來,A 和 B 各自準(zhǔn)備自己的私有密鑰SA和SB。A利用密鑰P和私有密鑰SA合成新的密鑰P-SA。B也利用密鑰P和私有密鑰SB合成新的密鑰P-SB。A將密鑰P-SA 發(fā)送給B,B也將密鑰 P-SB發(fā)送給A。A將私有密鑰SA和收到的密鑰P-SB合成為新的密鑰SA-P-SB。同樣地,B也將私有密鑰SB和收到的密鑰P-SA合成為新的密鑰P-SA-SB。 于是A和B都得到了密鑰P-SA-SB。這個(gè)密鑰將作為“加密密鑰”和“解密密鑰”來使用。

在這里插入圖片描述
在這里插入圖片描述

消息認(rèn)證碼

消息認(rèn)證碼可以實(shí)現(xiàn)“認(rèn)證”和“檢測篡改”這兩個(gè)功能。密文的內(nèi)容在傳輸過程中可能會(huì)被篡改,這會(huì)導(dǎo)致解密后的內(nèi)容發(fā)生變化,從而產(chǎn)生誤會(huì)。消息認(rèn)證碼就是可以預(yù)防這種情況發(fā)生的機(jī)制。

一句話說明白,還記得哈希函數(shù)吧,以共享密鑰加密為例,將密文和密鑰進(jìn)行哈希運(yùn)算得到一個(gè)數(shù),叫做消息認(rèn)證碼(MAC),發(fā)送密文的同時(shí)帶上MAC,因?yàn)殡p方密鑰相同,所以對方收到密文后,也把密文和密鑰進(jìn)行哈希運(yùn)算,若得到的數(shù)跟收到的MAC相同,則數(shù)據(jù)沒有被篡改!

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

數(shù)字簽名

在這里插入圖片描述

首先由A準(zhǔn)備好需要發(fā)送的消息、私有密鑰和公開密鑰。由消息的發(fā)送者來準(zhǔn)備這兩個(gè)密鑰,這一點(diǎn)與公開密鑰加密有所不同。A將公開密鑰發(fā)送給B。A使用私有密鑰加密消息。加密后的消息就是數(shù)字簽名。A將消息和簽名都發(fā)送給了B。B使用公開密鑰對密文(簽名)進(jìn)行解密。B對解密后的消息進(jìn)行確認(rèn),看它是否和收到的消息一致。流程到此結(jié)束。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

數(shù)字證書

在這里插入圖片描述

一句話,數(shù)字證書就是帶有認(rèn)證中心數(shù)字簽名和發(fā)送者信息(包含公開密鑰)的文件。其中數(shù)字簽名就是認(rèn)證中心使用自己私有密鑰對發(fā)送者信息進(jìn)行加密的結(jié)果。就是認(rèn)證中心給你的發(fā)送的公開密鑰蓋了個(gè)章,證明這是你發(fā)的?。?!

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

聚類

參考這篇文章哦。 無廢話的機(jī)器學(xué)習(xí)筆記(七)(聚類: kmeans、GMM、譜聚類)

其他算法

歐幾里得算法

歐幾里得算法(又稱輾轉(zhuǎn)相除法)用于計(jì)算兩個(gè)數(shù)的最大公約數(shù),被稱為世界上最古老的算法。

在這里插入圖片描述
在這里插入圖片描述

素性測試(費(fèi)馬測試)

素性測試是判斷一個(gè)自然數(shù)是否為素?cái)?shù)的測試。素?cái)?shù)(prime number)就是只能被 1 和其自身整除,且大于 1 的自然數(shù)。素?cái)?shù)從小到大有 2、3、5、7、11、13……目前在加密技術(shù)中被廣泛應(yīng)用的 RSA 算法就會(huì)用到大素?cái)?shù),因此“素性測試”在該算法中起到了重要的作用。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

網(wǎng)頁排名

網(wǎng)頁排名(PageRank,也叫作佩奇排名)是一種在搜索網(wǎng)頁時(shí)對搜索結(jié)果進(jìn)行排序的算法。 Google 因在搜索引擎中使用了這個(gè)算法而成為了世界知名的大企業(yè)是眾所周知的事情。

在這里插入圖片描述
在這里插入圖片描述
瀏覽網(wǎng)頁的人只是在不斷重復(fù)著 “在有鏈接指向的頁面之間移動(dòng)幾次之后,遠(yuǎn)程跳轉(zhuǎn)到了完全不相關(guān)的網(wǎng)頁這一過程!

在這里插入圖片描述
在這里插入圖片描述

漢諾塔

漢諾塔是一種移動(dòng)圓盤的游戲,同時(shí)也是一個(gè)簡單易懂的遞歸算法應(yīng)用示例。
在這里插入圖片描述
實(shí)際上,不管需要移動(dòng)多少圓盤,這個(gè)游戲最終都能達(dá)成目標(biāo)。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
上一篇 !加油!

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
DS2431P-A1+T 1 Maxim Integrated Products EEPROM, 1KX1, Serial, CMOS, PDSO6, ROHS COMPLIANT, TSOC-6
$3.23 查看
ST3215SB32768B0HSZA1 1 Kyocera AVX Components Quartz Crystal,

ECAD模型

下載ECAD模型
暫無數(shù)據(jù) 查看
SFH250V 1 OSRAM GmbH PIN-TYPE PHOTODIODE,LSR-3
$13.14 查看

相關(guān)推薦