RSA詳解

一、RSA 簡介

RSA 是一種公鑰密碼體制,由羅納德?李維斯特(Ron Rivest)、阿迪?薩莫爾(Adi Shamir)和倫納德?阿德曼(Leonard Adleman)于 1977 年提出,算法名稱由他們三人姓氏的首字母組成。與對稱加密算法不同,RSA 使用不同的加密密鑰與解密密鑰,屬于非對稱加密方式。

RSA 涉及三個重要參數:n、e、d。其中,(n, e) 作為公鑰可對外公開,(n, d) 則作為私鑰由用戶妥善保存。這里的 n 是兩個大素數 p 和 q 的乘積,即 n = p * q;e 是一個滿足 1 < e < φ(n) 且與 φ(n) 互素的整數,其中 φ(n) 是 n 的歐拉函數值,在 RSA 算法中,φ(n) = (p - 1) * (q - 1) ;d 是 e 關于模 φ(n) 的乘法逆元,即滿足 e * d ≡ 1 (mod φ(n)) 。

二、算法原理

(一)費馬小定理

若 p 為素數,對于任意整數 a,滿足 a^(p - 1) ≡ 1 (mod p) 。該定理在 RSA 算法原理推導中起到了一定的鋪墊作用。例如,當 p = 5,a = 3 時,3^(5 - 1) = 81,81 mod 5 = 1,符合費馬小定理。

(二)歐拉定理

  1. 歐拉函數:對于任意給定的正整數 n,歐拉函數 φ(n) 表示小于等于 n 的正整數中與 n 構成互質關系的數的個數。在 RSA 算法中,若 n = p * q(p、q 為互質的素數),則有 φ(n) = φ(pq) = φ(p) * φ(q) ,且當 p 為質數時,φ(p) = p - 1,所以 φ(n) = (p - 1) * (q - 1) 。
  1. 歐拉定理與模反元素:若兩個正整數 a 和 n 互質,則存在 a^φ(n) ≡ 1 (mod n) 。從這個等式可以推導出模反元素的概念,因為 a^φ(n) = a * a^(φ(n) - 1) ≡ 1 (mod n) ,所以如果兩個正整數 a 和 n 互質,那么一定存在整數 b(這里 b = a^(φ(n) - 1) ),使得 a * b - 1 能被 n 整除,即 a * b 被 n 除的余數是 1,b 就是 a 關于模 n 的模反元素。在 RSA 算法中,求私鑰 d 的公式為 d * e ≡ 1 (mod (p - 1) * (q - 1)) ,即 d 是 e 關于模 (p - 1) * (q - 1) 的模反元素。

(三)模運算

模運算與基本四則運算類似,但除法運算有所不同。其具有結合律、交換律、分配律等性質。同余的定義為:給定一個正整數 m,如果兩個整數 a 和 b 滿足 (a - b) 能被 m 整除,即 (a - b) mod m = 0,則稱 a 和 b 對模 m 同余。在模 n 意義下,除法規則有所變化,除以一個數等價于乘以它的逆元。

(四)拓展歐幾里得原理

對于互素的兩個整數 e1、e2,可以通過拓展歐幾里得算法求解滿足 e1 * x + e2 * y = gcd (e1, e2) 的整數 x 和 y。在 RSA 算法中,計算 e 關于模 φ(n) 的乘法逆元 d 時,可以利用拓展歐幾里得算法,此時 e1 = e,e2 = φ(n),求解出的 x 即為 d(需確保 x 為正數,若為負數則通過模運算轉換為正數)。

三、算法流程

圖解版:

文解版:

(一)密鑰生成

  1. 選取大素數 p、q:隨機選取兩個大素數 p 和 q,并嚴格保密這兩個數。例如,假設選取 p = 17,q = 19(實際應用中 p 和 q 通常是非常大的素數)。
  1. 計算乘積 n、歐拉函數值 φ(n)
    • 計算 n = p * q ,在上述例子中,n = 17 * 19 = 323。
    • 計算 φ(n) = (p - 1) * (q - 1) ,即 φ(323) = (17 - 1) * (19 - 1) = 16 * 18 = 288。
  1. 選取整數 e:選取一個整數 e,滿足 1 <e < φ(n) 且 gcd (φ(n), e) = 1(即 e 與 φ(n) 互素)。例如,選取 e = 5(5 與 288 互素)。
  1. 計算乘法逆元 d:計算 d,使得 d * e ≡ 1 (mod φ(n)) 。這里利用拓展歐幾里得算法,對于 e = 5,φ(n) = 288,求解 5 * d ≡ 1 (mod 288) ,通過計算可得 d = 173(因為 5 * 173 = 865,865 mod 288 = 1)。
  1. 生成密鑰
    • 公開鑰為 {e, n},即 {5, 323}。
    • 秘密鑰為 {d, n},即 {173, 323}。

(二)加密

加密時需將明文比特串進行分組,分組長度要小于 log?n 。假設明文 m = 88(滿足小于 log?323 ≈ 8.34,即分組長度合理),對明文分組 m 進行加密運算,公式為 c ≡ m^e (mod n) 。代入 e = 5,n = 323,m = 88,計算可得 c = 88^5 mod 323 = 233,得到的 c = 233 即為密文。

(三)解密

對密文分組 c 進行解密運算,公式為 m ≡ c^d (mod n) 。將 c = 233,d = 173,n = 323 代入,計算可得 m = 233^173 mod 323 = 88,成功還原出明文。

四、安全性分析

RSA 的安全性主要依賴于大數分解的難度,即給定 n = p * q,要從 n 分解出 p 和 q 在計算上是非常困難的。目前尚未從理論上證明破解 RSA 就一定等同于進行大數分解,也沒有證明破譯 RSA 的難度與大數分解難度完全等價。但無論如何,分解 n 是攻擊 RSA 的最直接方法。隨著計算機計算能力的不斷提升,為了保證 RSA 的安全性,需要選擇足夠大的 p 和 q,使 n 的長度足夠長。例如,早期較短長度的 RSA 密鑰已能被破解,如今通常推薦使用 2048 位甚至更長的密鑰長度。同時,密鑰生成過程中的隨機數生成質量、p 和 q 的選取方式等也對 RSA 的安全性有重要影響。若隨機數可預測、p 和 q 選擇不當(如太靠近或 p - 1、q - 1 的因子太小等),都可能導致 RSA 被破解。

五、應用場景

RSA 廣泛應用于現代通信加密、數字簽名等領域。在通信加密中,發送方使用接收方的公鑰對消息進行加密,接收方使用自己的私鑰進行解密,保證了通信內容的保密性。在數字簽名場景中,發送方使用自己的私鑰對消息進行簽名(對消息的哈希值進行加密),接收方使用發送方的公鑰驗證簽名,確保消息的完整性和發送方身份的真實性。例如在網絡支付、安全郵件傳輸等場景中,RSA 算法都發揮著關鍵作用,保障了信息的安全傳輸與交互。

六、總結

RSA 作為一種重要的非對稱加密算法,其原理基于數論中的多個定理,通過巧妙的密鑰生成、加密和解密流程,實現了安全的信息加密與數字簽名功能。理解 RSA 算法對于掌握現代密碼學知識、保障信息安全具有重要意義。同時,隨著技術的發展,需持續關注 RSA 的安全性,不斷優化參數選擇與應用方式,以應對潛在的安全威脅。

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

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

相關文章

Linux獲取物理硬盤總容量

獲取物理硬盤總容量: 1.查看單個硬盤: 使用 lsblk 或 fdisk -l (需要 sudo) 命令。它們會直接列出物理硬盤 (sda, nvme0n1 等) 和它們的分區,并顯示硬盤的總物理容量。 abcd四塊物理盤,只掛載使用3塊,留一塊未使用 最常見的原因通常是配置了熱備盤(RAID 1/5/6/10 等冗余…

STM32學習筆記14-I2C硬件控制

I2C外設簡介STM32內部集成了硬件I2C收發電路&#xff08;硬件收發器&#xff1a;自動生產波形&#xff0c;自動翻轉電平等&#xff09;&#xff0c;可以由硬件自動執行時鐘生成、起始終止條件生成、應答位收發、數據收發等功能&#xff0c;減輕CPU的負擔——軟件只需要寫入控制…

電子電氣架構 --- 軟件開發數字化轉型

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 簡單,單純,喜歡獨處,獨來獨往,不易合同頻過著接地氣的生活,除了生存溫飽問題之外,沒有什么過多的欲望,表面看起來很高冷,內心熱情,如果你身…

我國空間站首次應用專業領域 AI大模型

據中國載人航天工程辦公室消息&#xff0c;北京時間2025年8月15日22時47分&#xff0c;經過約6.5小時的出艙活動&#xff0c;神舟二十號乘組航天員陳冬、陳中瑞、王杰密切協同&#xff0c;在空間站機械臂和地面科研人員的配合支持下&#xff0c;圓滿完成既定任務&#xff0c;出…

WPF真入門教程35--手搓WPF出真汁【蜀味正道CS版】

1、項目介紹 本項目采用多層架構設計&#xff0c;使用wpf&#xff0c;Panuon.UI.Silver控件庫&#xff0c;AduSkin皮膚&#xff0c;MVVM等技術開發具有復雜交互和視覺效果的CS應用程序。WPF適用于企業級桌面應用&#xff1a;如ERP、CRM系統&#xff0c;需復雜表單和報表。WPF適…

JMeter與大模型融合應用之構建AI智能體:評審性能測試腳本

JMeter與大模型融合應用之構建AI智能體&#xff1a;評審性能測試腳本 一、引言 隨著DevOps和持續測試的普及&#xff0c;性能測試已成為軟件開發生命周期中不可或缺的環節。Apache JMeter作為最流行的開源性能測試工具之一&#xff0c;被廣泛應用于各種性能測試場景。然而&…

K8s 和 Docker的區別

一、各自誕生背景——為什么需要兩個東西Docker&#xff08;2013&#xff0c;Docker Inc.&#xff09; ? 目的&#xff1a;解決“我的代碼在你機器跑不起來”的經典環境問題。 ? 做法&#xff1a;用 Linux 內核的 cgroup/namespace 做輕量隔離&#xff0c;把“應用 依賴”打…

10.0 UML的介紹以及VisualStudio中查看類圖

本文介紹UML圖的含義、以及如何在VisualStudio中查看類圖。 一、UML圖介紹 UML(Unified Modeling Language,統一建模語言)是一種標準化的建模語言,用于可視化、規范、構建和記錄軟件系統的各個方面的圖表工具。 UML圖分為結構圖和行為圖兩大類: 結構圖?…

【Virtual Globe 渲染技術筆記】6 著色

著色&#xff08;Shading&#xff09; 曲面細分只是地球渲染的第一步。接下來是著色——通過模擬光線與材質的相互作用&#xff0c;計算每個像素的最終顏色。本節先回顧基礎的光照與紋理映射&#xff0c;再講解虛擬地球特有的經緯網格和夜景燈光效果。6.1 光照&#xff08;Ligh…

OpenCV Python——圖像拼接(一)(圖像拼接原理、基礎知識、單應性矩陣 + 圖像變換 + 拼接)

1 圖像拼接基礎知識1.1 特征匹配 原理及代碼示例1.2 單應性矩陣 原理及代碼示例2 圖像拼接&#xff08;一&#xff09;&#xff08;直接拼接&#xff09;3 圖像拼接&#xff08;二&#xff09;&#xff08;單應性矩陣 圖像變換 拼接&#xff09;3.1 單應性矩陣函數3.2 拼接函…

Git 中切換到指定 tag

在 Git 中切換到指定 tag&#xff08;比如 v1.22.1&#xff09;的正確做法如下&#xff1a;1?? 查看已有的 taggit tag會列出所有可用的版本&#xff0c;比如&#xff1a;v1.21.0 v1.22.0 v1.22.1 v1.23.02?? 切換到指定 taggit checkout tags/v1.22.1 -b v1.22.1解釋&…

rust 從入門到精通之變量和常量

變量和常量 隨著軟件系統安全的重要性與日俱增, rust這門集聚高并發, 安全, 適配云環境的編程語言在市場上得到了越來越高的認可和關注。但其復雜的機制使其難以學習。且其很多特性對于其他語言是全新的&#xff0c;這加劇了學習的困難程度。教程主要針對rust基礎進行講解, 雖然…

2508C++,支持rdma通信的高性能rpc庫

原文 [重磅]支持rdma通信的高性能的rpc庫–yalantinglibs.coro_rpc yalantinglibs的coro_rpc是基于C20的協程的高性能的rpc庫,提供了簡潔易用的接口,讓用戶幾行代碼就可實現rpc通信,現在coro_rpc除了支持tcp通信之外還支持了rdma通信(ibverbs). 通過簡單示例來感受一下rdma通…

FastAPI + React:現代 Web 前后端分離開發的全棧實踐指南

一、為什么選 FastAPI React&#xff1f; 性能&#xff1a;FastAPI 基于 Starlette Uvicorn&#xff0c;QPS 與 Node/Go 同級&#xff0c;實測 3 倍于 Flask&#xff1b;React 虛擬 DOM 代碼分割&#xff0c;首屏 < 1.2 s。效率&#xff1a;FastAPI 內置 Swagger/OpenAPI…

嵌入式硬件篇---電平轉換電路

電平轉換電路是電子電路中用來實現不同電壓信號之間轉換的關鍵電路&#xff0c;比如把 3.3V 的信號轉換成 5V&#xff0c;或者把 5V 轉換成 1.8V&#xff0c;確保不同電壓的芯片、模塊能正常通信。下面用通俗易懂的方式介紹幾種常見的電平轉換電路&#xff1a;一、電阻分壓電路…

SAP ABAP IS SUPPLIED

效果 此謂詞表達式用于檢查過程的某個形式參數“para”是否已賦值或被請求使用。如果在調用時實際參數被賦值給了該形式參數&#xff0c;則該表達式為真。 這種關系表達式僅能在函數模塊和方法中使用。而對于“para”而言&#xff0c;所有可選的形參都可以進行指定。 加上“NOT…

視頻內容提取與AI總結:提升學習效率的實用方法

文章目錄1、前言2、方法介紹2.1 B站視頻處理方案2.2 通用視頻處理方案2.3 AI內容總結3、實際效果4、使用建議5、技術發展趨勢6、總結&#x1f343; 作者介紹&#xff1a;25屆雙非本科網絡工程專業&#xff0c;阿里云專家博主&#xff0c;專注于 AI 原理、AI 應用開發、AI 產品設…

JVM 面試精選 20 題

目錄1. 什么是 JVM、JDK 和 JRE&#xff1f;它們之間的關系是什么&#xff1f;2. Java 內存區域&#xff08;運行時數據區&#xff09;有哪些&#xff1f;3. 說說你對 JVM 垃圾回收機制的理解。4. 常用的垃圾回收算法有哪些&#xff1f;5. 什么是 Minor GC、Major GC 和 Full G…

CMIP6 氣候模式核心特性解析

在全球氣候變化研究中&#xff0c;CMIP6&#xff08;第六次耦合模式比較計劃&#xff09;的氣候模式是關鍵工具。以下從研發背景與核心能力角度&#xff0c;解析五類主流模式的技術特點與適用場景。 一、主流模式技術特性 1. CanESM5/CanESM5-1&#xff08;加拿大環境與氣候變…

【牛客刷題】BM63 跳臺階:三種解法深度解析(遞歸/DP動態規劃/記憶化搜索)

文章目錄 一、題目介紹 1.1 題目描述 1.2 示例 二、算法設計思路 2.1 核心問題分析 2.2 斐波那契數列關系 三、流程圖 解法1:遞歸法(自頂向下) 解法2:動態規劃(自底向上) 解法3:記憶化搜索(遞歸優化) 解法4: 優化DP流程(推薦) 四、解法實現 五、復雜度分析對比 六、…