RSA算法原理——(1)目前常見加密算法簡介

2021-02-15 裸睡的豬

倫·麥席森·圖靈在二戰期間主要負責破譯德國人的密碼系統Enigma,破解密碼需要大量的計算,圖靈深知工欲善其事必先利其器的道理,於是一臺叫作CO-LOSSUS的計算機在1943年被研製出來,然後這種電子計算機總共生產了10臺,他們出色完成了密碼破譯工作。

後來甚至有人將二戰勝利原因歸功於圖靈機的誕生,雖然有些誇大,但圖靈機的誕生確實加快了二戰的結束這是不可否認的。而圖靈機戰勝的不是法西斯,而是戰勝了德國人的密碼系統Enigma。而1976年以前都是使用對稱加密的,所以圖靈機也就是戰勝了對稱加密算法。

6.23號是艾倫·麥席森·圖靈的誕辰,感興趣的同學可以看看電影《模仿遊戲》,影片改編自安德魯·霍奇斯編著的傳記《艾倫·圖靈傳》,當然喜歡閱讀的朋友可以看看原著,一定會讓你受益匪淺。

  

故事講完了,而今天我要給大家講的是另外一種加密算法:非對稱加密。而RSA算法就是其中的一種,也是非對稱加密使用到最廣泛的一種。其實RSA算法只是非常簡單的一個公式,沒有學過高數的同學照樣可以搞懂其原理,只要你和我一樣有一顆喜歡探索的心!!!

我把內容主要分為了三大塊,為什麼這麼分呢?這樣可以讓我們循序漸進的去了解rsa,然後一步一步的揭開rsa的面紗。

一、目前常見加密算法簡介
二、RSA算法介紹及數論知識介紹
三、RSA加解密過程及公式論證

一、目前常見加密算法簡介

目前常見的加密算法可以分成三類,對稱加密算法,非對稱加密算法和Hash算法。

注意Base64編碼只是一種編碼格式並不是加密算法,它可用於在HTTP環境下傳遞較長的標識信息。

1.對稱加密

1976年以前,所有的加密方法都是同一種模式即對稱加密,它採用了對稱密碼編碼技術。它的特點是文件加密和解密使用相同的密鑰,即加密密鑰也可以用作解密密鑰,這種方法在密碼學中叫做對稱加密算法,對稱加密算法使用起來簡單快捷,密鑰較短,且破譯困難,除了數據加密標準(DES),另一個對稱密鑰加密系統是國際數據加密算法(IDEA),它比DES的加密性好,而且對計算機功能要求也沒有那麼高。IDEA加密標準由PGP(Pretty Good Privacy)系統使用。對稱加密又分為流加密與分組加密這裡就不展開講了,感興趣的同學可以自行了解。

對稱加密的特點:

優點:對稱加密算法的優點是算法公開、計算量小、加密速度快、加密效率高。

缺點:在數據傳送前,發送方和接收方必須商定好秘鑰,然後雙方保存好秘鑰。如果一方的秘鑰被洩露,那麼加密信息也就不安全了

使用場景:本地數據加密、https通信、網絡傳輸等

常見算法:AES、DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6

2.非對稱加密

1976年,兩位美國計算機學家Whitfield Diffie 和 Martin Hellman,提出了一種嶄新構思,可以在不直接傳遞密鑰的情況下,完成解密。這被稱為「Diffie-Hellman密鑰交換算法」。這個算法啟發了其他科學家。人們認識到,加密和解密可以使用不同的規則,只要這兩種規則之間存在某種對應關係即可,這樣就避免了直接傳遞密鑰。這種新的加密模式被稱為」非對稱加密算法」。


非對稱加密特點:

優點:非對稱加密與對稱加密相比其安全性更好

缺點:加密和解密花費時間長、速度慢,只適合對少量數據進行加密。

使用場景:https會話前期、CA數字證書、信息加密、登錄認證等

常見算法:RSA、ECC(行動裝置用)、Diffie-Hellman、El Gamal、DSA(數字籤名用)

3.Hash算法

Hash算法特別的地方在於它是一種單向算法,用戶可以通過Hash算法對目標信息生成一段特定長度的唯一的Hash值,卻不能通過這個Hash值重新獲得目標信息。因此Hash算法常用在不可還原的密碼存儲、信息完整性校驗等。


Hash算法特點:

加密算法的選擇

對稱加密算法不能實現籤名,因此籤名只能非對稱算法。

驗證文件或字符一致性用hash算法

數據量大用對稱加密算法、小則可以用非對稱加密

還可以非對稱與對稱集成,可參考https加密過程HTTPS原理詳解

RSA建議採用1024位的數字,ECC建議採用160位,AES採用128為即可。

相關焦點

  • 漫畫:什麼是加密算法?
    如何進行加密呢?古人想出了一種非常樸素的加密方法,被稱為凱撒密碼。從宏觀上來看,這些加密算法可以歸結為三大類:哈希算法、對稱加密算法、非對稱加密算法。1. 哈希算法從嚴格意義上來說,哈希算法並不屬於加密算法,但它在信息安全領域起到了很重要的作用。哈希算法能做什麼用呢?其中一個重要的作用就是生成信息摘要,用以驗證原信息的完整性和來源的可靠性。
  • 量子計算簡介和經典量子算法
    所以量子算法是指專門為量子計算機所打造的全新算法,可以在某種問題上利用量子計算機量子多重態疊加的特性大幅度加快運算速度,如著名的舒爾算法(Shor『s algorithm)。舒爾算法要解決的問題可以概括為:給定一個合成數N,找到整數p在1和N之間且不包含1和N,並且N整除於p。通俗來講,p為N的非1和非N的因數。可是我們為什麼沒事要找N的因數呢?這和量子計算機又有什麼關係呢?
  • 信息學競賽基礎算法-常見排序算法總結
    排序是一種重要的數據處理方式,在應用數據前往往需要將數據進行排序.同時,排序也是很多重要算法的組成部分,在諸如搜索,動態規劃等過程中也發揮著關鍵作用.在信息學奧賽中,排序算法同樣必不可少.更優的排序算法能夠在時間或空間上使答案程序更優,從而帶來提分.今天我們給大家介紹的就是我們算法學習中常見的十大算法總結,希望能為同學們帶來幫助!
  • 一致性 Hash 算法
    集群:體現的是多個實例共同工作,最簡單/常見的集群即一個應用複製多份部署,實現高可用。分布式一定是集群,但集群不一定是分布式。(因為集群就是多個實例一起工作,分布式將一個系統拆分之後就是多個實例,所以分布式一定是集群,而集群並不一定是分布式,因為複製型的集群不是拆分而是複製)。
  • 目標檢測 | Yolo1算法原理總結
    算法通過運行單個卷積網絡來定位和檢測物體,流程圖如下:步驟:1)將輸入圖像的大小調整為448×4482)在圖像上運行卷積神經網絡,輸出每個grid cell的Bounding Box和所屬每個類的概率值3)根據非極大值抑制算法,輸出最有可能包含物體的Bounding Box若僅包含上述步驟
  • 推薦系統常用的推薦算法
    /(點擊尾部閱讀原文前往)《推薦系統算法初探》《推薦系統的典型推薦案例》《美團推薦算法實踐》《TOP 10開源的推薦系統簡介》《各廠推薦算法體會》《常用推薦算法》>一、推薦系統概述和常用評價指標1.1 推薦系統的特點在知乎搜了一下推薦系統,果真結果比較少,顯得小眾一些,然後大家對推薦系統普遍的觀點是:(1)重要性UI>數據>算法,就是推薦系統中一味追求先進的算法算是個誤區,通常論文研究類的推薦方法有的帶有很多的假設限制
  • 中國古代數學啟發計算機加密算法
    曉查 明敏 發自 凹非寺量子位 報導 | 公眾號 QbitAI沒想到,古代韓信點兵的傳說,後來竟然啟發了計算機加密算法。
  • YouTube 推薦算法原理
    近日,在谷歌刊登的一篇論文中,YouTube工程師詳細地分析了YouTube推薦算法的內部工作原理。
  • K近鄰算法(KNN)原理小結
    KNN算法三要素3. KNN算法之暴力實現原理4. KNN算法之KD樹實現原理5. KNN算法之訓練樣本不平衡情況6. 算法優缺點KNN算法是選擇與輸入樣本在特徵空間內最近鄰的k個訓練樣本並根據一定的決策規則,給出輸出結果 。
  • 區塊鏈技術六大核心算法
    在如今看來,非對稱加密技術完全可以解決這個籤名問題。非對稱加密算法的加密和解密使用不同的兩個密鑰.這兩個密鑰就是我們經常聽到的」公鑰」和」私鑰」。公鑰和私鑰一般成對出現, 如果消息使用公鑰加密,那麼需要該公鑰對應的私鑰才能解密; 同樣,如果消息使用私鑰加密,那麼需要該私鑰對應的公鑰才能解密。
  • 推薦 :如何正確選擇聚類算法?
    —層次聚類、基於質心的聚類、最大期望算法和基於密度的聚類算法,並討論不同算法的優缺點。聚類算法十分容易上手,但是選擇恰當的聚類算法並不是一件容易的事。數據聚類是搭建一個正確數據模型的重要步驟。數據分析應當根據數據的共同點整理信息。然而主要問題是,什麼通用性參數可以給出最佳結果,以及什麼才能稱為「最佳」。本文適用於菜鳥數據科學家或想提升聚類算法能力的專家。下文包括最廣泛使用的聚類算法及其概況。根據每種方法的特殊性,本文針對其應用提出了建議。聚類模型可以分為四種常見的算法類別。
  • 車輛定位算法展望
    1. 簡介現階段的定位系統的目標還是為人服務的,是為導航系統提供當前位置,或者收集車輛狀態數據。我們特定討論「Localization Algorithm」這個具體的概念出於以下幾個原因。首先,「算法」指軟體開發,與僅依靠GNSS信息的定位系統相比,目前已經有足夠多的可用的傳感器或數據信息,定位性能有了很大的飛躍。其次,定位是許多系統都需要的服務,而非一個單獨的系統。第三,我們迴避了「導航」這個詞,是因為這只是定位算法的一個應用場景。
  • 常見算法Python實例開原始碼26152星github項目倉庫(19k字PDF發「Python算法實例」下載)
    常見算法Python實例開原始碼
  • SVM 支持向量機算法-原理篇
    1,SVM 算法的歷史早在1963 年,著名的前蘇聯統計學家弗拉基米爾·瓦普尼克在讀博士期間,就和他的同事阿列克謝·切爾沃寧基斯共同提出了支持向量機的概念。但由於當時的國際環境影響,他們用俄文發表的論文,並沒有受到國際學術界的關注。
  • 雙邊濾波算法的原理、流程、實現及效果
    至此,所有的推導工作完成,那麼我們在理一下算法的執行步驟吧: (1):已知條件:輸入圖像f(x),動態範圍[-T,T],空域和值域方差σs、σr。 (2):設定γ = Pi / 2T,ρ=γσr,N=1/(γσr*γσr) ; (3) : for (0≤n≤N),獲取f(y)cos(β)、f(y)sin(β)、cos(β)以及sin(β)所對應的圖像數據(浮點類型); (4):利用O(1)高斯模糊算法對上述四個圖像數據進行標準差為σs的高斯模糊並累計。
  • 常見的密碼加密
    加密形式與電腦鍵盤中字母的排列順序(從左到右,從上到下)有關1    2    3    4    5    6    7    8    9    0! 在香港,兩個字面都採用同一編碼,由輸入員人手選擇字面;在臺灣,第二字面的漢字會在開首補上"1"字,變成5個數字的編碼。
  • LSTM算法介紹(1)
    13.1算法應用原理介紹LSTM 由Hochreiter & Schmidhuber (1997)提出,並在近期被Alex Graves
  • 機器學習的 XGBoost 算法簡介
    緩存優化數據結構和算法以充分利用硬體。算法特點該算法的實現旨在提高計算時間和內存資源的效率。設計目標是充分利用可用資源來訓練模型。一些關鍵的算法實現特性包括:XGBoost 是免費的開源軟體,可在 Apache-2 許可下使用。為什麼要使用 XGBoost?使用 XGBoost 的兩個理由也是項目的兩個目標:執行速度。