對稱加密與非對稱加密

(一)對稱加密(Symmetric Cryptography)

對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的密鑰(secret key)。對稱加密有很多種算法,由于它效率很高,所以被廣泛使用在很多加密協議的核心當中。

對稱加密通常使用的是相對較小的密鑰,一般小于256 bit。因為密鑰越大,加密越強,但加密與解密的過程越慢。如果你只用1 bit來做這個密鑰,那黑客們可以先試著用0來解密,不行的話就再用1解;但如果你的密鑰有1 MB大,黑客們可能永遠也無法破解,但加密和解密的過程要花費很長的時間。密鑰的大小既要照顧到安全性,也要照顧到效率,是一個trade-off。

2000年10月2日,美國國家標準與技術研究所(NIST--American National Institute of Standards and Technology)選擇了Rijndael算法作為新的高級加密標準(AES--Advanced?Encryption?Standard)。

對稱加密的一大缺點是密鑰的管理與分配,換句話說,如何把密鑰發送到需要解密你的消息的人的手里是一個問題。在發送密鑰的過程中,密鑰有很大的風險會被黑客們攔截。現實中通常的做法是將對稱加密的密鑰進行非對稱加密,然后傳送給需要它的人。

?

?

(二)非對稱加密(Asymmetric Cryptography)

非對稱加密為數據的加密與解密提供了一個非常安全的方法,它使用了一對密鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外泄,而公鑰則可以發給任何請求它的人。非對稱加密使用這對密鑰中的一個進行加密,而解密則需要另一個密鑰。比如,你向銀行請求公鑰,銀行將公鑰發給你,你使用公鑰對消息加密,那么只有私鑰的持有人--銀行才能對你的消息解密。與對稱加密不同的是,銀行不需要將私鑰通過網絡發送出去,因此安全性大大提高。

公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。

目前最常用的非對稱加密算法是RSA算法,是Rivest, Shamir, 和Adleman于1978年發明,他們那時都是在MIT。

?

雖然非對稱加密很安全,但是和對稱加密比起來,它非常的慢,所以我們還是要用對稱加密來傳送消息,但對稱加密所使用的密鑰我們可以通過非對稱加密的方式發送出去。為了解釋這個過程,請看下面的例子:

(1) Alice需要在銀行的網站做一筆交易,她的瀏覽器首先生成了一個隨機數作為對稱密鑰。

(2) Alice的瀏覽器向銀行的網站請求公鑰。

(3) 銀行將公鑰發送給Alice。

(4) Alice的瀏覽器使用銀行的公鑰將自己的對稱密鑰加密。

(5) Alice的瀏覽器將加密后的對稱密鑰發送給銀行。

(6) 銀行使用私鑰解密得到Alice瀏覽器的對稱密鑰。

(7) Alice與銀行可以使用對稱密鑰來對溝通的內容進行加密與解密了。

?

image_thumb3

?

(三)總結

(1) 對稱加密加密與解密使用的是同樣的密鑰,所以速度快,但由于需要將密鑰在網絡傳輸,所以安全性不高。

(2) 非對稱加密使用了一對密鑰,公鑰與私鑰,所以安全性高,但加密與解密速度慢。

(3) 解決的辦法是將對稱加密的密鑰使用非對稱加密的公鑰進行加密,然后發送出去,接收方使用私鑰進行解密得到對稱加密的密鑰,然后雙方可以使用對稱加密來進行溝通。


轉載于:https://www.cnblogs.com/songchunmin/p/7789724.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454134.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454134.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454134.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

清華大學《操作系統》(十二):臨界區與鎖

多進程并發運行,導致多個進程間有資源共享,比如CPU、內存,因此存在不確定性和不可重現,可能導致多次運行結果不一致。因此操作系統需要利用同步機制在并發執行的同時,保證一些操作是原子操作。 互斥是指一個進程占用了…

gcc生成靜態庫和動態庫

gcc生成靜態庫和動態庫一、庫文件簡介簡單地說,庫(Library)就是一組已經寫好了的函數和變量、經過編譯代碼,是為了能夠提高開發效率和運行效率而設計的。庫分為靜態庫(Static Library)和共享庫(…

python 流式計算框架_流式計算的三種框架:Storm、Spark和Flink

我們知道,大數據的計算模式主要分為批量計算(batch computing)、流式計算(stream computing)、交互計算(interactive computing)、圖計算(graph computing)等。其中,流式計算和批量計算是兩種主要的大數據計算模式,分別適用于不同的大數據應用…

清華大學《操作系統》(十八):管程于信號量

信號量與管程也是進程間通信的方式。信號量是與鎖在同一層級實現的,是操作系統提供的一種協調共享資源訪問的方法。信號量由操作系統管理,操作系統作為管理者地位是高于進程的。 一、信號量 1、信號量(semaphore):是操…

Iptalbes自動封殺暴力破解(Qmail郵件系統)者的IP地址

今天發現Qmail郵件系統的maillog里面有大量的“user not found”信息,通過下面的日志不難發現,是來自同一IP的很多不同的用戶連接Qmail郵件系統認證失敗的信息。黑客試圖通過這種方式來破解Qmail郵件系統的用戶名和密碼,從而來發送大量的垃圾…

安裝Postman

在web和移動端開發時,常常會調用服務器端的restful接口進行數據請求,為了調試,一般會先用工具進行測試,通過測試后才開始在開發中使用。 這里介紹一下如何在chrome瀏覽器利用postman應用進行restful api接口請求測試。 因為&#…

python紅樓夢詞頻統計_用 Python 分析《紅樓夢》(2)-阿里云開發者社區

6 詞頻統計完成分詞以后,詞頻統計就非常簡單了。我們只需要根據分詞結果把片段切分開,去掉長度為一的片段(也就是單字),然后數一下每一種片段的個數就可以了。這是出現次數排名前 20 的單詞:(括號內為頻數)可以跟之前只統計出現次…

清華大學《操作系統》(二十):死鎖和進程通信

一、死鎖 死鎖:一組阻塞的進程(兩個或多個),持有一種資源,等待獲取另一個進程所占有的資源,而導致誰都無法執行。 可重復使用的資源: 在一個時間只能一個進程使用,且不能被刪除。…

python操作redis實例_Java,php,Python連接并操作redis實例

1、Java連接并操作redis在Eclipse里新建一個java project,導入jedis-*.jar包。示例代碼,其他對應的操作類型見:http://my.oschina.net/u/2391658/blog/705069import redis.clients.jedis.Jedis;//示例代碼public class RedisTest {public sta…

java: cannot execute binary file 如果遇到這個錯,一般是操作系統位數出問題了。

[roottestserver usr]# java/jdk1.6.0_12/bin/java-bash: java/jdk1.6.0_12/bin/java: cannot execute binary file后來檢驗,檢查了一段時間,沒有問題,最后有高人提示經驗證,是64位版本移到32位上。本文轉自 jxwpx 51CTO博客&…

div 自適應高度

自適應高度 ,設置最小高度;通常情況下,沒有設置高度,div默認自適應高度且無最低高度 1 div{ 2 _height:200px; /* css 注解: 僅IE6設別此屬性,假定最低高度是200px ,設置高度200px&#xff0c…

GCC使用詳情

1.前言 GCC編譯器的手冊(GCC MANUAL)的英文版已經非常全面,并且結構也非常完善了,只是一直都沒有中文的版本,我這次閱讀了GCC編譯器的主要內容,對手冊的內容進行了結構性的了解,認為有必要對這次閱讀的內容進行整理&am…

清華大學《操作系統》(二十二):文件系統

文件系統和文件: 文件系統是操作系統中管理持久性數據的子系統,提供數據存儲和訪問功能,組織、檢索、讀寫訪問數據。文件是具有符號名,由字節序列構成的數據項集合,是文件系統的基本數據單位,文件名是文件…

卡巴綠殺6 By Moshow魔手

卡巴綠殺6 By Moshow魔手 Kaspersky Anti-Virus Move-edition 6 (-_-b汗Move Edition...)【這是卡巴斯基綠色移動版本推薦用于u盤】By Moshow魔手 [url]Http://Hi.baidu.com/MoshowGame[/url]祝o(∩_∩)o...天下無毒)擁有全球最全的病毒庫)擁有最快的全球剿毒反應速度) 基于穩定…

python將字符串寫入csv_用Python將字符串值寫入CSV文件

我有一個很大的數據集,在第二列有句子和他們的情緒狀態。我開發了代碼來將它們讀作numpy數組。我需要的是,如果一個句子的情感是中性的,那么返回為真,否則返回假。if-else條件返回的每個結果都應寫入CSV文件。但是這里它只在CSV文…

加載靜態文件,父模板的繼承和擴展

用url_for加載靜態文件<script src"{{ url_for(static,filenamejs/login.js) }}"></script>flask 從static文件夾開始尋找可用于加載css, js, image文件繼承和擴展把一些公共的代碼放在父模板中&#xff0c;避免每個模板寫同樣的內容。base.html子模板繼…

清華大學《操作系統》(二十三):I/O子系統

常見設備接口類型&#xff1a; 1、字符設備&#xff1a;鍵盤鼠標、串口 a.以字節為單位順序訪問 b.I/O命令通常使用文件訪問接口和語義 2、塊設備&#xff1a;磁盤、磁帶、光驅 a.均勻的數據塊訪問 b.I/O命令通常使用文件系統接口&#xff0c;也可以使用內存映射訪問 3、網絡…

百度地圖 Android SDK - 個性化地圖

什么是百度個性化地圖Android SDK&#xff1f; 百度個性化地圖Android SDK是一套基于Android 2.2及以上版本號設備的應用程序接口&#xff0c;您能夠通過該套接口實現主要的地圖功能&#xff0c;而且能夠定制地圖樣式&#xff0c;實現個性化地圖。 該接口提供下面功能&#xff…

mysql讀寫分離_MySQL基于amoeba讀寫分離實驗

主從復制只是一個同步數據的方式讀寫分離&#xff1a;只在主的上面寫&#xff0c;只在從的上面讀讀寫分離方案&#xff1a;【1】基于程序代碼內部 (生產環境中應用最廣泛&#xff0c;性能最好&#xff0c;需要開發人員來實現)【2】基于中間代理層的實現amoeda 是阿里巴巴使用的…

Django models模型

Django models模型 一. 所謂Django models模型&#xff0c;是指的對數據庫的抽象模型&#xff0c;models在英文中的意思是模型&#xff0c;模板的意思&#xff0c;在這里的意思是通過models&#xff0c;將數據庫的借口抽象成python自己的一個類。然后在python Django框架其他代…