日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

实例告诉你什么是加密/解密和算法加密算法和解密算法怎么理解

發布時間:2023/12/4 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 实例告诉你什么是加密/解密和算法加密算法和解密算法怎么理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

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

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

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

輸出的就是【def】。

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

凱撒大帝

密碼學

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

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

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

向神一般的男人致敬

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

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

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

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

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

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

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

什么是加密

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

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

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

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

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

加密算法

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

不可逆加密

不可逆加密其實就很簡答了,就是字面意思,就是加密后其實是解密不了的,要解密的話,其實也是根據明文再加密一次,然后得到密文,和原來的密文做匹配最后來校驗這個結果對不對。主流的加密算法有: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值做一下對比,就知道這個文件有沒有被人動過手腳修改過內容了。

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

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

對稱性加密

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

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

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

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

對稱性加密

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

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

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

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

非對稱性加密

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

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

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

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

RSA算法過程:

舉個栗子

為了方便,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加解密部分算法部分素材圖片來自于:

總結

以上是生活随笔為你收集整理的实例告诉你什么是加密/解密和算法加密算法和解密算法怎么理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。