一起來學資訊保安知識(2) 對稱密碼和非對稱密碼

2021-05-27 14:50:24 字數 1245 閱讀 1005

目前密碼分為對稱密碼和非對稱密碼。其中,對稱密碼主要有des、3des、aes,非對稱密碼主要有rsa、ecc。

先舉個簡單的對稱密碼的例子。假設有一串數字123789,我們需要對其進行加密,加密的方法是每個數字加1,那麼加密前後如下:

明文123789

密文234890

解密過程為每個數字減1。

從上邊的例子中我們可以看到,加密演算法可以描述為」每個數字加1「,由此可以推出解密過程為」每個數字減一「,這就是對稱密碼演算法。這裡的對稱,並不是說加密金鑰(這裡的加的1就可以看作是金鑰)和解密金鑰一定要相同,而是說加解密金鑰可以互相推倒出來。

對稱加密脆弱的地方在於,可以近似看作是加解密金鑰為同乙個金鑰,那麼在進行安全通訊時,通訊雙方擁有相同的金鑰,一旦該金鑰洩露,安全也就有了問題。為此,提出了非對稱加密。

非對稱密碼的加解密金鑰(暫時先這麼理解,隨後再細說)是不能相互推導出來的。舉個形象的例子:

對稱密碼:房間a和房間b之間有一扇門,乙個在房間a的人(明文)通過這扇門(加密過程)走到房間b(密文),他從房間b(密文)再通過這扇門(解密過程)走到房間a(明文)。即進出為同一扇門,加解密密碼相同。

非對稱密碼:房間a和房間b之間有兩扇門d1和d2,其中d1只能從房間a到房間b,d2只能從房間b到房間a。乙個在房間a的人(明文)通過d1(加密)走到房間b(密文),他從房間b(密文)通過d2(解密)走到房間a(明文)。其中d1和d2為不同的兩扇門,即金鑰不同。下面稍微具體說一下非對稱加密的兩個金鑰的關係。

非對稱密碼的金鑰包含乙個公鑰和乙個私鑰,在初始化金鑰的過程中,會同時生成兩個金鑰k1和k2(就好比同時製造了兩扇門d1和d2),其中k1和k2之間不能互相推倒,從目前的技術來看,無法直接通過k1得到k2,也無法通過k2得到k1。k1和k2的特性如下:

對於資料data,通過k1進行加密之後,可以通過k2進行解密;也可以通過k2進行加密,通過k1進行解密。即,初始化過程中生成的k1和k2其實是對等的關係,雖然兩個金鑰不同並且不能互相推倒,但是無論用哪乙個金鑰進行加密,用與之對應的另乙個金鑰都可以進行解密。那麼,下一步就要將k1和k2區分開來。

非對稱密碼中的公鑰就是可以公開給大家的,私鑰就是自己留著的。對於k1和k2,使用者可以選擇其中乙個金鑰為公鑰,那麼另乙個即為私鑰。現假設k1為公鑰,k2為私鑰。你擁有k2,你的朋友擁有你公開的k1。你的朋友給你發郵件時,可以通過k1進行加密,這時,只有你擁有k2,只有你能解密。你的私鑰k2不是用來加密,而是用來做簽名的。

可以先通過上面的描述有個初步的印象,非對稱加密簽名沒有上邊說的那麼簡單,但是基本流程是沒有問題的,後續再細說。

一起來學設計模式(2) 簡單工廠模式

其實,在gof的23種設計模式中,並沒有簡單工廠模式這種說法,為了和工廠模式 抽象工廠模式逐一對比,我們還是先從簡單工廠模式說起。工廠 即用來生產 產品 考慮以下需求 我需要通過乙個類來建立乙個蘋果,或者是建立乙個梨,或者是建立乙個。在上邊的需求中,這個可以建立蘋果 梨 香蕉的類即為簡單工廠類。同時...

一起來學GO語言2 GO語言基本語法

go語言和其它語言一樣,都是從小的元件構建而來的,由變數 表示式 基本型別來構成的 1 可訪問性 乙個宣告實體如果在函式的外部,那麼它對整個包可見。實體的第乙個字母的大小寫決定其是否挎包可見。如果第乙個字母小寫,那麼包外不可見,如果第乙個字母大寫,那麼是包外可見的。在go語言中一般使用 駝峰式 命名...

資訊熵的計算公式 一起來學資訊理論(一) 資訊熵

引子 資訊是什麼?在夏農的劃時代 發表前,我們對 資訊 這個詞的含義只有乙個模糊的概念。夏農針對 資訊 給出了乙個令人信服的定義,並且說明了如何對資訊進行定量計算,並對這個定義給出了數學證明。之後,我們對 資訊 的識別 傳輸 儲存 加工等才有了堅實的數學基礎 有了堅實的數學基礎,才發展出各種工程應用...