關于 RSA:RSA 加密算法過程

RSA 是一種非對稱加密算法,用“公鑰”加密,用“私鑰”解密,保證數據傳輸安全。

比喻理解:鎖和鑰匙

想象一下:

  • 公鑰是“上鎖的鎖”,別人可以用它鎖住箱子(加密),但打不開。

  • 私鑰是“鑰匙”,只有你自己有,可以打開鎖(解密)。

所以:

  • 我給你一個“鎖”(公鑰),你用它鎖住一個箱子(加密數據)送回來。

  • 只有我有鑰匙(私鑰),我能打開箱子(解密數據)。

注意事項

  • 明文必須小于 n,也就是 m<n 否則需分塊加密

  • 實際使用中,RSA 通常只加密 對稱密鑰(比如 AES),而不是大量數據

  • 使用填充算法(如 OAEP)防止加密攻擊

第一步:選兩個質數

我們先選兩個質數(不能被整除的整數):

p = 3
q = 11

第二步:計算 n 和 φ(n)

n = p × q = 3 × 11 = 33
φ(n) = (p - 1) × (q - 1) = 2 × 10 = 20

其中 φ(n) 是一種叫“歐拉函數”的東西,是 RSA 算法的核心之一。

第三步:選一個公鑰 e

我們要選一個跟 φ(n) = 20 互質的整數 e,通常選一個小的質數。

e = 7 (因為 7 跟 20 沒有公因數,合法)

第四步:求私鑰 d(讓它能反過來解密)

找一個整數 d,讓它滿足:

(e × d) % φ(n) = 1
(7 × d) % 20 = 1

試試:

7 × 3 = 21,21 % 20 = 1 

所以:

d = 3

總結密鑰對:

公鑰 (e, n) = (7, 33)
私鑰 (d, n) = (3, 33)

加密過程

假設明文 m = 4,我們用公鑰 (7, 33) 加密:

c = m^e % n = 4^7 % 33= 16384 % 33= 16

得到密文:c = 16

解密過程

我們收到密文 16,用私鑰 (3, 33) 解密:

m = c^d % n = 16^3 % 33 = 4096 % 33 = 4

恢復出原文:m = 4

歐拉定理

歐拉定理(非常關鍵)

如果:

  • n 是兩個大質數 p * q

  • m n 互質(也就是說 m 不能被 n 的質因子整除)

那么一定成立:m^φ(n) mod n = 1?(其中 φ(n) 是歐拉函數)

φ(n):如果 n?是兩個質數 p?和 q?的乘積:n =?p * q,那么歐拉函數就是:φ(n)=(p?1)(q?1) ,這表示從 1 到 n?1 里面,有多少個數跟 n 互質。

假設:

  • p=7?,q=11

  • 那么 n=p ? q=7 * 11 = 77

  • 則:

    φ(77) = (7 ? 1)(11 ? 1) = 6 * 10 = 60

所以如果 m 與 77 互質,那:m ^ 60 mod??77 = 1

深入理解

我們選 d 的時候,是專門選出來能“抵消” e 的效果的。

所以:

  • 加密是:先做 e 次方

  • 解密是:再做 d 次方

  • e 和 d 是互相“取消”的

就像是這樣理解(m是需要用rsa加密的數據)

m^e 再 ^d   就等于 m^(e*d)     而我們生成 d 的時候,保證 e*d 剛好變成 “1 + φ(n) 的倍數”這個時候 m^(e*d) 就剛好又變回 m 本人。

解釋:

如果:e?* d = 1 mod φ(n)? ?? e * d = 1 + k * φ(n)

所以:m ^ (e * d) = m ^ (1+k * φ(n)) = m * ???????m ^ (k * φ(n))

然后根據歐拉定理:m ^ φ(n) mod n = 1? ?????????m ^ (k * φ(n)) mod n = 1

所以:m^(e * d) mod n = m mod n =? m 數據被解密(rsa要求被加密的數據滿足 m < n)

總結

步驟操作
選質數p = 3, q = 11
計算 nn = 33
計算 φ(n)φ(n) = 20
選公鑰 ee = 7
求私鑰 dd = 3
加密m = 4c = 16(用公鑰)
解密c = 16m = 4(用私鑰)

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

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

相關文章

SM3算法C語言實現(無第三方庫,帶測試)

一、SM3算法介紹 SM3算法是中國國家密碼管理局&#xff08;OSCCA&#xff09;于2010年發布的商用密碼散列函數標準&#xff0c;屬于我國自主設計的密碼算法體系之一 &#xff0c;標準文檔下載地址為&#xff1a;SM3密碼雜湊算法 。SM3算法輸出長度為256位&#xff08;32字節&a…

搜索二叉數(c++)

前言 在學習數據結構的時候我們學習過二叉樹&#xff0c;那啥是搜索二叉樹呢&#xff1f;我們知道單純的二叉樹沒有增刪查改的實際意義&#xff0c;因為沒有任何限制條件的二叉樹其實用處很局限。但是堆就不一樣了&#xff0c;他就是一個二叉樹加上了大小堆的限制條件&#xf…

vc MFC在opencv的Mat圖像上顯示中文:Mat轉位MFC的CImage,畫圖寫文字,再轉回Mat

vc MFC在opencv的Mat圖像上顯示中文&#xff1a;Mat轉位MFC的CImage&#xff0c;畫圖寫文字&#xff0c;再轉回Mat // Step 1 創建CImage獲取dc int iImgW matImgSized.cols; int iImgH matImgSized.rows; int iChannel matImgSized.channels(); bool bCon matImgSized.is…

Docker環境部署

目錄 一&#xff1a;Docker 概述 1.什么是 Docker 2:Docker 的優勢 3.Docker 的應用場景 4:Docker 核心概念 二:Docker 安裝 1:本安裝方式使用阿里的軟件倉庫 三:Docker 鏡像操作 1:獲取鏡像 2.查看鏡像信息 3.查看鏡像詳細信息 4.修改鏡像標簽(老名字新名字) 5:刪…

Axios 攔截器實現原理深度剖析:構建優雅的請求處理管道

在構建現代前端應用時&#xff0c;網絡請求處理是關鍵環節。作為最流行的HTTP客戶端庫之一&#xff0c;Axios通過其攔截器機制&#xff08;Interceptors&#xff09;提供了強大的請求/響應處理能力。本文將深入Axios源碼&#xff0c;揭示攔截器背后的精妙設計與實現原理。 一、…

寶塔安裝nginx-http-flv-module,音視頻直播,第二篇

1&#xff0c;先安裝環境安裝nginx 先卸載原有nigix nigix 大于等于 1.2.6 cd /www/server # 進入寶塔目錄 yum install git -y git clone https://gitee.com/winshining/nginx-http-flv-module.git 使用源碼安裝nigix 在 自定義模塊 區域點擊「添加」&#xff0c;填寫以下參…

低延遲4G專網:保障關鍵業務的實時通信

在工業互聯網、智慧園區、應急通信等對“實時性”要求極高的場景中&#xff0c;網絡延遲的高低&#xff0c;直接決定了業務運行的可靠性與安全性。IPLOOK依托多年核心網研發經驗&#xff0c;推出的低延遲4G專網解決方案&#xff0c;正是為此類關鍵業務打造的“通信專線”&#…

NLP語言發展路徑分享

自然語言處理初期發展歷程 早期&#xff1a;離散表示 one-hot&#xff08;只表達“有/無”&#xff0c;語義完全丟失&#xff09;→ n-gram&#xff08;局部上下文&#xff0c;但高維稀疏&#xff09;→ TF-IDF&#xff08;考慮詞頻與權重&#xff0c;但不能表達詞關聯&#x…

如何將文件從安卓設備傳輸到電腦?

將文件從 Android 手機傳輸到 PC 是例行公事嗎&#xff1f;想讓文件傳輸更輕松嗎&#xff1f;幸運的是&#xff0c;您可以從本文中獲得 7 種方法&#xff0c;其中包含詳細的步驟&#xff0c;幫助您輕松了解如何將文件從 Android 傳輸到 PC&#xff0c;涵蓋了從無線工具到傳統 U…

【經驗分享】淺談京東商品SKU接口的技術實現原理

京東商品 SKU 接口的技術實現原理涉及數據建模、架構設計、接口協議、安全機制及性能優化等多個技術層面。以下從技術角度詳細拆解其實現邏輯&#xff1a; 一、SKU 數據模型與存儲架構 1. SKU 數據模型設計 核心字段定義&#xff1a; 基礎屬性&#xff1a;SKU ID、商品名稱、…

虛擬機配置node.js(前端環境搭建)

1.在windows下安裝node.js&#xff08;以及npm&#xff09; 修改npm鏡像為阿里云的 npm install --registryhttps://registry.npmmirror.com 2.在Linux下安裝node.js&#xff08;Centos7 只支持16版本之前的&#xff09; wget https://npmmirror.com/mirrors/node/v15.14.0/n…

多模態大語言模型arxiv論文略讀(129)

Task Success Prediction for Open-Vocabulary Manipulation Based on Multi-Level Aligned Representations ?? 論文標題&#xff1a;Task Success Prediction for Open-Vocabulary Manipulation Based on Multi-Level Aligned Representations ?? 論文作者&#xff1a;M…

【Redis】Redis 關于 BigKey 的實踐規約

目錄 一、BigKey 的概念 1.1 普通 key 的設計規則 1.2 BigKey 的定義 1.3 BigKey 存在的問題 二、BigKey 的發現與解決方案 第一種方式&#xff1a;redis-cli --bigkeys 第二種方式&#xff1a;scan掃描 第三種方式&#xff1a;第三方工具 第四種方式&#xff1a;網絡…

Golang 與 C/C++ 交互實踐

在軟件開發的實際場景中&#xff0c;我們常常會遇到需要將不同語言的優勢結合起來的情況。Golang 憑借其高效的并發性能和簡潔的語法&#xff0c;在網絡編程和系統開發領域備受青睞&#xff1b;而 C/C 則以其強大的底層操作能力&#xff0c;在系統資源管理方面具有獨特優勢。那…

五子棋流量主小程序單模式多模式開源版

功能和特點&#xff1a; 核心游戲功能&#xff1a; 1515 標準棋盤 黑白棋交替落子 自動判斷勝負和平局 悔棋功能 計時功能 UI 設計&#xff1a; 木紋風格棋盤 立體感棋子&#xff08;使用陰影和漸變&#xff09; 響應式布局&#xff0c;適配不同屏幕尺寸 勝利彈窗動畫 交互體驗…

Python古代文物成分分析與鑒別研究:灰色關聯度、嶺回歸、K-means聚類、決策樹分析

原文鏈接&#xff1a;tecdat.cn/?p42718分析師&#xff1a;Gan Tian 在文化遺產保護領域&#xff0c;古代玻璃制品的成分分析一直是研究中西方文化交流的關鍵課題。作為數據科學家&#xff0c;我們在處理某博物館委托的古代玻璃文物保護咨詢項目時&#xff0c;發現傳統分析方法…

RabbitMQ消息隊列實戰指南

RabbitMQ 是什么&#xff1f; RabbitMQ是一個遵循AMQP協議的消息中間件&#xff0c;它從生產者接收消息并傳遞給消費者&#xff0c;在這個過程中&#xff0c;根據路由規則進行消息的路由、緩存和持久化。 AMQP&#xff0c;高級消息隊列協議&#xff0c;是應用層協議的一個開放…

用Java將PDF轉換成GIF

為什么要將 PDF 文件轉換為 GIF 圖片&#xff1f; PDF 是一種矢量圖像格式&#xff08;因此可以根據指定的尺寸進行渲染&#xff09;&#xff0c;而 GIF 是一種有損的、固定尺寸的位圖文件&#xff0c;像素值固定。因此&#xff0c;將 PDF 轉換為 GIF 文件時&#xff0c;我們需…

Redis之分布式鎖(2)

上一篇文章我們介紹了什么是分布式鎖和分布式鎖的一些基本概念。這篇文章我們來講解一下基于數據庫如何實現分布式鎖。 基于數據庫實現分布式鎖 基于數據庫實現分布式鎖可以分為兩種方式&#xff0c;分別是基于數據庫表和基于數據庫排他鎖。 基于數據庫表 要實現分布式鎖&…

智能檢測護航電池產業:容量設備如何提升效率與安全?

電池容量是衡量其儲能能力的重要指標&#xff0c;直接影響設備續航與使用壽命。電池容量檢測設備通過模擬真實使用場景&#xff0c;精準測量電池的充放電性能&#xff0c;為電池生產、質檢及回收環節提供關鍵數據支持&#xff0c;成為保障電池品質與安全的核心工具。 核心功能…