当前位置: 首页 > news >正文

RSA的理解运用与Pycharm组装Cryptodome库

1、RSA的来源

RSA通常指基于RSA算法的密码系统,令我没想到的是,其名字的来源竟然不是某个含有特别意义的单词缩写而成(比如PHP:Hypertext Preprocessor(超文本预处理器)),而是由1977年提出该算法的三个歪果仁的姓氏首字母这么很随意的拼接起来的(Ron Rivest、Adi Shamir和Leonard Adleman),可它却是首个既能用于加密又能用于数字签名(这个还不懂什么是签名,书上是这么说的,反正不是真的 签名)的非对称加密算法

2、RSA算法的原理

RSA算法基于大数分解的数学难题,大概原理如下:

<1>密钥生成

·生成大质数p和q

选择两个大素数(我做题遇到的通常是1024位的)p和q

·计算公共模数n

另有一个数(通常叫做模数)n(2048位),计算n=pxq

·计算欧拉函数

欧拉函数f(n)(字符fai打不出来)或phi(值钱啊做题遇到过),f(n)=(p-1)(q-1)

·计算公钥e

存在一个整数e(通常叫公钥),满足1<e<f(n)  (通过伪随机数生成器生成)且gcd(e,f(n))=1即两个数的最大公约数为1(gcd为欧几里得算法),这里e的选取是很容易的,因为所有大于p和q的素数都可用

·计算私钥d

计算d(私钥),使得dxe=1(且是恒等于) mod f(n)  移项后dxe mod f(n)=1也一样的。

解密的私钥d满足dxe=kf(n)+1(其中k是大于等于1的整数)所以,只要知道e和f(n),则很容易计算出d

<2>加密

使用公钥(e,n)加密消息m:c=m**e(m的e次方)mod n 其中c为密文

<3>解密

成功生成密钥后,只有接收者本人拥有私钥(d,n),然后即可通过公式进行RSA解密。

使用私钥(d,n)解密密文c:m=c**d(c的d次方) mod n(m表示解密后的明文,c表示待解密的密文)

3、RSA的运用

RSA算法大致广泛应用于以下领域:

<1>数据加密

用于加密敏感信息,如电子邮件、文件等等

<2>数字签名

用于验证消息的真实性和完整性

<3>SSL/TLS协议

用于保护网络通信,如HTTPS

<4>身份认证

用于验证用户或设备的身份,如智能卡、VPN等

4、RSA的安全性

其实RSA完全依赖于大数分解的难度(做题通常以分解n为突破口)。随着现在计算能力的提升,密钥长度需不断增加才能一定程度的保持安全性(像做题很容易找到工具分解n,即使密钥是1024位,我就发现不是很复杂的RSA把附件往AI那一扔也能跑出来,当然不建议这么做,因为啥也学不到)目前,网上公认2048位或更长的密钥被认为是安全的

5、RSA的优点与缺点

<1>优点

安全性高,基于数学难题

支持加密和数字签名

<2>缺点

计算量太大,速度较慢

密钥长度较长,存储和传输开销大

总之RSA算法是现代密码学呢基础,广泛应用于数据加密、数字签名等领域。尽管存在计算量大等缺点,但其高安全性使它在信息安全中占据重要地位(ctf中crypto方向也很常见)

这里我在做一题RSA时运用了pythoncharm运行代码,顺便学到了pycharm的安装与更新还有其中crypto dome库的安装

6、pycharm的运用

关于我的python和idle总是运行不了这个事在很多地方找了解决办法,但貌似并没用,最后直接把我的python系统直接卸载“从头来过”,并在网上得到了关于python软件包的组装,一步一步安装了近三个小时才达到正常使用的地步(包括库的install和换源换背景等统统学了个遍)

关于pycharm的下载及安装我就不写了,(安装的时候也忘了截图)因为网上有很多教程,都大同小异,我主要想记下的是我自己出现的感觉比较棘手和浪费时间的问题

<1>国内源的无法查找与换源

这里我卸载了重新装以后按教程新建了后缀名为.ini的国内源网站址,但在install crypto dome库时,报错国内网(douban)查找不到相关的库,这就很难办了

我一直以为可能是安装语句不正确的原因,在网上和AI那里找了各种各样的语句执行install命令,但最后发现报错还是一样(这里忘了截图,其实也没必要),于是我突然想到了我建的那个.ini文件夹里的网址,随即立即打开教程里给的国内网(豆瓣)复制到firefox里,发现果然打不开

所以说问题就出在了这个网址上,我的理解是可能pycharm将这个网址作为后端数据库,需要执行什么样的命令就从这个网站调取,既然这个网站访问不了了那install命令自然执行不了,也就找不到crypto dome库了(这么理解也不知道对不对)

既然这样,那我想了想能不能换个源站,可以用的那种...

于是上AI一查,的确有,阿里的华为的,然后发现内个用不了的douban也在,好像就有点理解怎么个事了,应该pycharm这款应用对应的国内网就是这几个

然后果断换了华为的,继续install,这次总算不像之前报错了,但,,,还是在报错

这我英语也不好,手机翻译了一下

所以意思就是我的pycharm也过期了,然后又找升级的口令

最后找到命令在终端里面升级

终于,几经辗转,这次install 终于成功了

最后自然是成功的获得了这题RSA算法的flag

诶我这时候有个微妙的感觉,成功的喜悦似乎不仅仅在获得flag上,还有很大一部分是经过我这么久的探索然后解决了让我困惑和棘手的问题 尽管是小问题

因为之前更多的是看别人怎么做自己就怎么做的被牵着鼻子解决,比如之前用的app都是下载安装好就什么工具都可以用,但这个组装crypto,如果一上来就有人教,而不去想,虽然花费的时间要少很多,但是下次同样的问题定然还要再到网上找一遍,虽然现在的条件不难但很麻烦

别的不说,光对命令理解了的话印象都会更深刻

比如这里终端升级python的命令

pip install --upgrade python

pip是python的包管理工具,install安装,upgrade升级,前面加两个--,最后接上python

还有安装crypto dome库就更好记了

pip install pycryptodome

前两个单词一样的,后面拆开就是py crypto dome

这样很好记,就算忘了下次再查一下包能记住的

相关文章:

RSA的理解运用与Pycharm组装Cryptodome库

1、RSA的来源 RSA通常指基于RSA算法的密码系统&#xff0c;令我没想到的是&#xff0c;其名字的来源竟然不是某个含有特别意义的单词缩写而成&#xff08;比如PHP&#xff1a;Hypertext Preprocessor(超文本预处理器)&#xff09;&#xff0c;而是由1977年提出该算法的三个歪果…...

Android 多用户相关

Android 多用户相关 本文主要记录下android 多用户相关的adb 命令操作. 1: 获取用户列表 命令: adb shell pm list users 输出如下: Users:UserInfo{0:机主:c13} running默认只有一个用户, id为0 &#xff0c;用户状态为运行 2: 创建新用户 命令&#xff1a; adb shell …...

第三课:异步编程核心:Callback、Promise与Async/Await

Node.js 是一个基于事件驱动的非阻塞 I/O 模型&#xff0c;这使得它非常适合处理高并发的网络请求。在 Node.js 中&#xff0c;异步编程是一项非常重要的技能。理解和掌握异步编程的不同方式不仅能提高代码的效率&#xff0c;还能让你更好地应对复杂的开发任务。本文将深入探讨…...

红果短剧安卓+IOS双端源码,专业短剧开发公司

给大家拆解一下红果短剧/河马短剧&#xff0c;这种看光解锁视频&#xff0c;可以挣金币的短剧APP。给大家分享一个相似的短剧APP源码&#xff0c;这个系统已接入穿山甲广告、百度广告、快手广告、腾讯广告等&#xff0c;类似红果短剧的玩法&#xff0c;可以看剧赚钱&#xff0c…...

C# ArrayPool

ArrayPool<T> 的作用ArrayPool<T> 的使用方式共享数组池自定义数组池 注意事项应用场景 在C#中&#xff0c;ArrayPool<T> 是一个非常有用的工具类&#xff0c;主要用于高效地管理数组的分配和回收&#xff0c;以减少内存分配和垃圾回收的压力。它属于 System…...

Conda 生态系统介绍

引言 Conda 是一个开源的包管理和环境管理系统,最初由 Continuum Analytics 开发,现为 Anaconda 公司维护。它在数据科学和 Python/R 生态中占据核心地位,因其能跨平台(Linux/Windows/macOS)管理依赖关系,并通过虚拟环境隔离不同项目的开发环境。Conda 的生态系统包含多…...

批量将 Word 拆分成多个文件

当一个 Word 文档太大的时候&#xff0c;我们通常会将一个大的 Word 文档拆分成多个小的 Word 文档&#xff0c;在 Office 中拆分 Word 文档是比较麻烦的&#xff0c;我们需要将 Word 文档的页面复制到另外一个 Word 文档中去&#xff0c;然后删除原 Word 文档中的内容。当然也…...

Gravitino源码分析-SparkConnector 实现原理

Gravitino SparkConnector 实现原理 本文参考了官网介绍&#xff0c;想看官方解析请参考 官网地址 本文仅仅介绍原理 文章目录 Gravitino SparkConnector 实现原理背景知识-Spark Plugin 介绍(1) **插件加载**(2) **DriverPlugin 初始化**(3) **ExecutorPlugin 初始化**(4) *…...

react基本功

useLayoutEffect useLayoutEffect 用于在浏览器重新绘制屏幕之前同步执行代码。它与 useEffect 相同,但执行时机不同。 主要特点 执行时机:useLayoutEffect 在 DOM 更新完成后同步执行,但在浏览器绘制之前。这使得它可以在浏览器渲染之前读取和修改 DOM,避免视觉上的闪烁…...

python-leetcode-解决智力问题

2140. 解决智力问题 - 力扣&#xff08;LeetCode&#xff09; 这道题是一个典型的 动态规划&#xff08;Dynamic Programming, DP&#xff09; 问题&#xff0c;可以使用 自底向上 的方式解决。 思路 定义状态&#xff1a; 设 dp[i] 表示从第 i 题开始&#xff0c;能获得的最高…...

引领变革!北京爱悦诗科技有限公司荣获“GAS消费电子科创奖-产品创新奖”!

在2025年“GAS消费电子科创奖”评选中&#xff0c;北京爱悦诗科技有限公司提交的“aigo爱国者GS06”&#xff0c;在技术创新性、设计创新性、工艺创新性、智能化创新性及原创性五大维度均获得评委的高度认可&#xff0c;荣获“产品创新奖”。 这一奖项不仅是对爱悦诗在消费电子…...

微信小程序+SpringBoot的单词学习小程序平台(程序+论文+讲解+安装+修改+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统背景 &#xff08;一&#xff09;社会需求背景 在全球化的大背景下&#xff0c;英语作为国际…...

wordpress分类名称调用的几种情况

在WordPress中&#xff0c;如果你想调用当前分类的名称&#xff0c;可以使用single_cat_title()函数。以下是一些常见的使用方法和场景&#xff1a; 1. 在分类页面调用当前分类名称 如果你正在分类存档页面(category.php)中&#xff0c;可以直接使用single_cat_title()函数来…...

HMC7043和HMC7044芯片配置使用

一,HMC7043芯片 MC7043独特的特性是对14个通道分别进行独立灵活的相位管理。所有14个通道均支持频率和相位调整。这些输出还可针对50 Ω或100 Ω内部和外部端接选项进行编程。HMC7043器件具有RF SYNC功能,支持确定性同步多个HMC7043器件,即确保所有时钟输出从同一时钟沿开始…...

html播放本地音乐

本地有多个音乐文件&#xff0c;想用 html 逐个播放&#xff0c;或循环播放&#xff0c;并设置初始音量。 audio 在 html 中播放音乐文件用 audio 标签&#xff1a; controls 启用控制按钮&#xff0c;如进度条、播放、音量、速度等。不加不显示任何 widget。autoplay 理应启…...

Windows11下玩转 Docker

一、前提准备 WSL2&#xff1a;Windows 提供的一种轻量级 Linux 运行环境&#xff0c;具备完整的 Linux 内核&#xff0c;并支持更好的文件系统性能和兼容性。它允许用户在 Windows 系统中运行 Linux 命令行工具和应用程序&#xff0c;而无需安装虚拟机或双系统。Ubuntu 1.1 安…...

vLLM + Open-WebUI 本地私有化部署 DeepSeek-R1-Distill-Qwen-32B 方案

一、vLLM 部署 DeepSeek-R1-Distill-Qwen-32B DeepSeek-R1-Distill 系列模型是 DeepSeek-R1 的蒸馏模型&#xff0c;官方提供了从 1.5B - 70B 不同尺寸大小的模型。特别适合在计算资源有限的环境中部署。 DeepSeek-R1 各个版本的蒸馏模型评估结果如下&#xff1a; 其中 DeepS…...

【基础知识】回头看Maven基础

背景 项目过程中&#xff0c;对于Maven的pom.xml文件&#xff0c;很多时候&#xff0c;我通过各种参考、仿写&#xff0c;最终做出想要的效果。 但实际心里有些迷糊&#xff0c;不清楚具体哪个基础的配置所实现的效果。 今天&#xff0c;特意回过头来&#xff0c;了解Maven的基…...

在 MyBatis 中,若数据库字段名与 SQL 保留字冲突解决办法

在 MyBatis 中&#xff0c;若数据库字段名与 SQL 保留字冲突&#xff0c;可通过以下方法解决&#xff1a; 目录 一、使用转义符号包裹字段名二、通过别名映射三、借助 MyBatis-Plus 注解四、全局配置策略&#xff08;辅助方案&#xff09;最佳实践与注意事项 一、使用转义符号…...

docker-compose Install reranker(fastgpt支持) GPU模式

前言BGE-重新排名器 与 embedding 模型不同,reranker 或 cross-encoder 使用 question 和 document 作为输入,直接输出相似性而不是 embedding。 为了平衡准确性和时间成本,cross-encoder 被广泛用于对其他简单模型检索到的前 k 个文档进行重新排序。 例如,使用 bge 嵌入模…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...