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;成为保障电池品质与安全的核心工具。 核心功能…