tft每日頭條

 > 生活

 > 信息加密與解密算法

信息加密與解密算法

生活 更新时间:2024-08-28 12:19:57

現在,數字資産,加密,算法已經充斥着我們的生活,就像頭條的推薦算法,抖音的推薦算法,如何推出爆款的算法等等。

那麼什麼是算法。其實這是一個很容易理解的概念,算法其實就是按照一定邏輯并且把它實現出來的過程。簡單來說,按照計算機輸入-> 處理 -> 輸出的流程,就是:

輸入數據 -> 用算法進行計算 -> 輸出結果

舉個例子: 輸入的數據是 【abc】,

算法是 :輸入數據的每一位的字母順序向後移動3位并輸出對應的字母,

輸出的就是【def】。

然後大家有沒有發現,上面的例子其實也是一個加解密的過程。這裡是著名的【凱撒密碼】,據稱,當年凱撒就是用這種方法和他的将軍們進行溝通交流了。

信息加密與解密算法(實例告訴你什麼是加密)1

凱撒大帝

密碼學

密碼學(在西歐語文中,源于希臘語kryptós“隐藏的”,和gráphein“書寫”)是研究如何隐密地傳遞信息的學科。

在現代特别指對信息以及其傳輸的數學性研究,常被認為是數學和計算機科學的分支,密碼學的首要目的是如何隐藏信息的真實意圖和含義。特别是在于電腦與網絡安全所使用的技術,如訪問控制與信息的機密性。

著名的密碼學者Ron Rivest解釋道:“密碼學是關于如何在敵人存在的環境中通訊”,自工程學的角度,這相當于密碼學與純數學的異同。

向神一般的男人緻敬

信息加密這個需求是一直存在的,自從有了信息遠距離傳遞的需求,如何防止信息洩露一直都是人們所追求并時刻關注的。從飛鴿傳書到電報再到電話,互聯網,無處不在,也是因為戰争,信息的重要性被無比的重視和提高到一個全新的高度,并飛快地發展。

戰争在某種程度上推動了科技的發展,大家現在使用的,接觸的加解密算法,甚至計算機,都是來源于二戰。二戰中過于加解密的手段和戰鬥絲毫不遜色于正面戰場的激烈程度。

大家耳熟能詳的大概有,美軍截獲并破解了日軍進攻中途島的密文,最終在中途島殲滅了日軍大部分的艦隊成為太平洋戰争的轉折點;又或者,更加有意義和深刻影響的英德密碼學上的交鋒。

圖靈破解了德國号稱不可能并破解的Enigma(恩尼格瑪)密碼機和Tunny密碼,為盟軍赢回了主動權和極大的戰略優勢,并創建了現代計算機科學和人工智能理論,是個神一般的男人,可以說帶領人類點亮數字化甚至說改變人類文明的走向的男人

信息加密與解密算法(實例告訴你什麼是加密)2

在現在,任何談及密碼學,加解密,算法,人工智能,數字化等現在計算機科學,都繞不開這個猶如數字上帝一般的人物,因為是他奠定了這些學科的基礎,以至于我們現在在用的計算機,人工智能,手機等等軟硬件都是基于他的理論框架内實踐的。

計算機界内有一個号稱計算機的諾貝爾獎就叫“圖靈獎”。

據說蘋果那個咬掉一口的蘋果LOGO也是喬布斯為了緻敬圖靈老爺子。

什麼是加密

其實加密這個事情大家每時每刻都在接觸,打開手機的密碼,指紋,銀行卡密碼等等,這些都是一個加密手段,這裡主要講的是加密在互聯網上的使用。

這裡有個概念要寫解釋一下,就是無論是手機,還是電腦,還是服務器,甚至是智能開關,我們把接入網絡的設備統一稱為終端。那麼,互聯網就是把這些終端串起來的一張大網,讓這裡面的設備可以互聯互通。

信息加密與解密算法(實例告訴你什麼是加密)3

正如上文述說的,在這種長距離的傳播中,如何保證數據安全就是一個很大的剛需和命題,在這個網絡中,所有人都參與,也就意味着都有機會截取到你的數據包,如果你是明文傳輸的話,也就意味着赤裸裸地把自己的密碼暴漏在所有人面前。互聯網一開始,也為軍方和科研機構服務的,那些印着top secret(絕密)的材料更加需要得到保護。

所以,在互聯網的假設和各種協議的設計之處,如何保證數據包的傳輸安全和加解密算法,都已經早早地安排上了,畢竟,沒有加密的明文數據包在互聯網上傳播,和你在人潮湧動的大街上裸奔沒啥區别。

信息加密與解密算法(實例告訴你什麼是加密)4

這裡先不描述那些複雜晦澀難懂的加密原理和算法,我們先來了解一般來說,用得最多的加密算法和基本的原理,然後舉個栗子來感受一下加解密和算法的過程來看看是怎麼保護數據和通訊安全的。

加密算法

一般來說,現在我們在用的主流的加密方式分為兩大類,一類是可逆加密,一類是不可逆加密。

不可逆加密

不可逆加密其實就很簡答了,就是字面意思,就是加密後其實是解密不了的,要解密的話,其實也是根據明文再加密一次,然後得到密文,和原來的密文做匹配最後來校驗這個結果對不對。主流的加密算法有:MD5,SHA1等等。

這部分可以略過,有點複雜,有興趣的可以研究一下。

MD5算法原理:

MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,算法的輸出由四個32位分組組成,将這四個32位分組級聯後将生成一個128位散列值;

第一步、填充:如果輸入信息的長度(bit)對512求餘的結果不等于448,就需要填充使得對512求餘的結果等于448。填充的方法是填充一個1和n個0。填充完後,信息的長度就為N*512 448(bit);

第二步、記錄信息長度:用64位來存儲填充前信息長度。這64位加在第一步結果的後面,這樣信息長度就變為N*512 448 64=(N 1)*512位;

第三步、裝入标準的幻數(四個整數):标準的幻數(物理順序)是(A=(01234567)16,B=(89ABCDEF)16,C=(FEDCBA98)16,D=(76543210)16);

第四步、四輪循環運算:循環的次數是分組的個數(N 1);

因為不可逆,所以不可逆算法主要是應用在防篡改,防止明文直接暴漏,數字簽名等用途,最近流行大火的區塊鍊技術中在在很多地方用了不可逆算法的地方來保證安全性。

舉個栗子

這幾年我們時常聽到某某互聯網公司被脫庫(就是數據庫被黑客拷貝下來),然後發現密碼是明文存儲的,結果圈内人一陣震驚,破口大罵,吃瓜群衆我看不懂,但是大受震撼。

為什麼互聯網從業者各種震驚呢。因為密碼在互聯網系統中,是不允許被明文存儲的,這是一條鐵律,鐵到什麼程度呢,就像葵花寶典第一句,欲練神功必先自宮。

這是因為随着大家的賬戶的增多,很多人可能都是用同一個密碼的,然後呢,因為開發人員和數據庫管理等問題,也是希望最大程度上保護用戶而不存儲用戶的明文密碼數據最大程度上的保護用戶信息。下面舉個常規狀态下是怎麼保存賬戶和密碼登錄這個過程給大家感受一下。

用戶注冊:用戶輸入手機号和密碼,然後通過數據接口上報給服務器(合理有一層網絡傳輸的SSL加密算法來打包保護數據在網絡中傳播的安全性,這裡先不講解,就是在數據包傳輸的時候的加解密保護),服務器系統在收到用戶的手機号和密碼之後,會對明文密碼做一次不可逆的加密,一般來說都會用 sha1(md5(明文密碼)),經過兩次不可逆加密,然後把得到的密文,就是加密結果那堆亂七八糟的字符串,存儲在數據庫裡面。

密碼明文: abc123456cba

加密後密文:34758d201abdb25f4cb4f88900d67b7b4a4739b5

然後這個時候,其實大家都不知道這串字符串對應的是個啥東西,怎麼校驗用戶密碼呢。校驗原理是這樣的:

用戶登錄:用戶輸入手機号和密碼,系統收到之後,先根據手機号找到這個用戶,然後把收到的明文密碼,按照原來的味道,原來的配方再加密一次,然後得到一個結果,把這個結果和數據庫裡面存儲的密文做對比,這樣就可以知道密碼是正确是還是錯誤的。

這種技術還被廣泛的防篡改上,我們的文件其實自創建開始就有一個MD5值,一旦文件内容被改動過,就等于原來加密的明文信息改變了,MD5值就會改變。所以當你拿到一個文件和MD5值,然後在你收到文件的時候,把你收到的文件和原來文件的MD5值做一下對比,就知道這個文件有沒有被人動過手腳修改過内容了。

信息加密與解密算法(實例告訴你什麼是加密)5

對稱性加密和非對稱性加密

在很多情況下,我們在加密完了之後,都希望能解密開明文信息知道說的是什麼内容,所以這個時候我們就需要能解密出明文的算法了。所以可逆加密中,有這兩種常用的加解密方式。

對稱性加密

對稱性加密簡單來說,就像一個鎖,然後有兩把鑰匙,兩把都可以打開鎖。這個是最早應用的加密方式,包括前文所說的凱撒密碼也是這種。

首先把明文,就是我們前文說的abc,使用秘鑰加密,這裡的的秘鑰就是凱撒密碼中的向後偏移3位字母順序的【3】,算法就是把明文偏移3位字母順序後輸出,得到的結果就是def,我們稱為密文。

拿到密文之後,同時你擁有解密的秘鑰,秘鑰是【3】,解密算法是,密文裡面的字母,向前退3為字母順序,得到明文【abc】。

這我們能看到,秘鑰是【3】,加密算法和解密算法,也存在些許區别。

信息加密與解密算法(實例告訴你什麼是加密)6

對稱性加密

但是漸漸地,大家發現這種方式不夠用了,因為如果秘鑰被人獲取了之後,推算出加密方式,很容易就會被破解,而且大規模應用之後,加密算法可以被推算出來,然後秘鑰一旦洩露風險性問題也是極高。當然,這個隻是相對的,也有一些對稱性加密算法會無線增加破解的難度,常見的AES,DES,3DES等。

DES 加密算法是對密鑰進行保密,而公開算法,包括加密和解密算法。這樣,隻有掌握了和發送方 相同密鑰的人才能解讀由 DES加密算法加密的密文數據。

因此,破譯 DES 加密算法實際上就是 搜索密鑰的編碼。對于 56 位長度的 密鑰 來說,如果用 窮舉法 來進行搜索的話,其運算次數為 2 ^ 56 次。

所以,一般現在不單獨使用對稱性加碼,而是混合着非對稱性加密一起使用,再混合時間戳,随機數等算法。

非對稱性加密

非對稱性加密稍微複雜一點,它是有兩把鑰匙的,一把成為公鑰,一把成為秘鑰。簡單來說,就是一個鎖,然後有兩把對應的鑰匙,這兩把鑰匙是匹配的,然後兩把鑰匙一次插入,才能打開得到明文信息。

一般是拿公鑰來加密數據體,然後這個用公鑰加密的密文,公鑰自己也是是打不開的,要使用與公鑰對應的私鑰才能解密出來明文數據,所以隻獲取到公鑰是解不開數據的,這在無形中大大提高了安全性。

信息加密與解密算法(實例告訴你什麼是加密)7

非對稱性有很多種加密算法,其中最普遍的是RSA加密算法。被普遍認為是目前最優秀的公鑰方案之一。RSA 是第一個能同時用于加密和數字簽名的算法,它能夠抵抗目前已知的所有密碼攻擊,被 ISO推薦為公鑰數據加密标準。

RSA 加密算法基于一個十分簡單的數論事實:将兩個大素數相乘十分容易,但想要對其乘積進行因式分解卻極其困難,因此可以将乘積公開作為加密密鑰。

RSA算法過程:

信息加密與解密算法(實例告訴你什麼是加密)8

信息加密與解密算法(實例告訴你什麼是加密)9

信息加密與解密算法(實例告訴你什麼是加密)10

信息加密與解密算法(實例告訴你什麼是加密)11

舉個栗子

為了方便,p , q 的值取小一點,假設:p = 17,q = 19,

(1)求N:N = p * q = 323;

(2)求L:L = lcm(p-1, q-1)= lcm(16,18) = 144,144為16和18對最小公倍數;

(3)求E:1 < E < L ,gcd(E,L)=1,即1 < E < 144,gcd(E,144) = 1,E和144互為質數,E = 5滿足上述2個條件,E = 5,此時公鑰= (E,N)=(5,323);

(4)求D:求D也必須滿足2個條件:1 < D < L,E*D mod L = 1,即1 < D < 144,5 * D mod 144 = 1,顯然當D= 29 時滿足上述兩個條件。1 < 29 < 144,5*29 mod 144 = 145 mod 144 = 1,此時私鑰=(D,N)=(29,323);

(5)加密:準備的明文必須是小于N的數,因為加密或者解密都要 mod N,其結果必須小于N。

假設明文 = 123,則 密文=(123的5次方)mod 323=225

(6)解密:明文=(225的29次方)mod 323 =123,所以解密後的明文為123。

鑒于RSA算法的應用非常的多,可以說隻要要計算機的地方,就有RSA算法的存在,這裡就不舉出具體應用的,如果有興趣的小夥伴可以留言,我們會找一期出來專門說一下這個算法的應用實例。

結語:

基于加密解密,保護信息安全,各路大佬都用各種手段鬥智鬥勇,法力無邊。本文隻是做了簡單的概述,這裡面設計了各種數學公式,算法,計算機設計等内容,本文盡量用大白話的語言讓大家了解計算機科學的神秘的面紗和運行邏輯,如果想了解更多的内容,可以評論留言(我估計有耐心看到這裡的人不多)。

鳴謝

互聯網鼓勵開源共享,但是也尊重版權

【申明】RSA加解密部分算法部分素材圖片來自于:RSA加密算法原理_張維鵬的博客-CSDN博客_rsa算法

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved