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算法的密码系统,令我没想到的是,其名字的来源竟然不是某个含有特别意义的单词缩写而成(比如PHP:Hypertext Preprocessor(超文本预处理器)),而是由1977年提出该算法的三个歪果…...

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

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

红果短剧安卓+IOS双端源码,专业短剧开发公司
给大家拆解一下红果短剧/河马短剧,这种看光解锁视频,可以挣金币的短剧APP。给大家分享一个相似的短剧APP源码,这个系统已接入穿山甲广告、百度广告、快手广告、腾讯广告等,类似红果短剧的玩法,可以看剧赚钱,…...

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

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

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

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

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

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

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

微信小程序+SpringBoot的单词学习小程序平台(程序+论文+讲解+安装+修改+售后)
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统背景 (一)社会需求背景 在全球化的大背景下,英语作为国际…...

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

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

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

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

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

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

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

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

200W数据需要去重,如何优化?
优化去重逻辑的时间取决于多个因素,包括数据量、数据结构、硬件性能(CPU、内存)、去重算法的实现方式等。以下是对优化去重逻辑的详细分析和预期优化效果: 1. 去重逻辑的性能瓶颈 时间复杂度:使用HashSet去重的时间复…...

使用免费IP数据库离线查询IP归属地
一、准备工作 1.下载免费IP数据库 首先,访问 MaxMind官网(https://www.maxmind.com/en/home)如果你还没有MaxMind账号,可以通过此链接地址(https://www.maxmind.com/en/geolite2/signup)进行账号注册&…...

【游戏】【客户端性能测试】
待续… 一、 常见指标 1. 越高越好 FPS 2. 越低越好 网络流量CPU内存(PSS, momo)Drawcalls三角形数耗电量包体大小 二、 游戏体验 1. 直接体感 游戏花屏闪退卡顿延迟 2. 可能原因 内存超标Drawcall数量多FPS波动严重CPU占用高居不下…...

软考中级-数据库-3.3 数据结构-树
定义:树是n(n>=0)个结点的有限集合。当n=0时称为空树。在任一非空树中,有且仅有一个称为根的结点:其余结点可分为m(m>=0)个互不相交的有限集T1,T2,T3...,Tm…,其中每个集合又都是一棵树,并且称为根结点的子树。 树的相关概念 1、双亲、孩子和兄弟: 2、结点的度:一个结…...

typora高亮方案+鼠标侧键一键改色
引言 在typora里面有一个自定义的高亮, <mark></mark>>但是单一颜色就太难看了, 我使用人工智能, 搜索全网艺术家, 汇集了几种好看的格式,并且方便大家侧键一键 调用, 是不是太方便啦 ! 示例 午夜模式 春意盎然 深海蓝调 石墨文档 秋日暖阳 蜜桃宣言 使用方法 …...

【CSS】Tailwind CSS 与传统 CSS:设计理念与使用场景对比
1. 开发方式 1.1 传统 CSS 手写 CSS:你需要手动编写 CSS 规则,定义类名、ID 或元素选择器,并为每个元素编写样式。 分离式开发:HTML 和 CSS 通常是分离的,HTML 中通过类名或 ID 引用 CSS 文件中的样式。 示例&#…...

Linux(Centos 7.6)命令详解:vim
1.命令作用 vi/vim 是Linux 系统内置不可或缺的文本编辑命令,vim 是vi 的加强版本,兼容vi 的所有指令,不仅能编辑文本,而且还具有shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性。 2.命令语法 usage: …...

记录一次wifi版有人物联串口服务器调试经过
1、首先买了一个华为的wifi路由器,连接上以后,设置好网络名字和wifi密码 2、用网线连接串口服务器,通过192.168.1.1登录,进行配置 找到无线客户端配置,先在基本配置中打开5G配置,然后再去5.8G配置中设置 …...

QWQ大模型评测榜单
评测榜单说明 在数学推理基准AIME24上,QwQ-32B达到了79.5分,几乎与DeepSeek-R1-617B的79.8分持平,远超OpenAI o1-mini的63.6分,及相同尺寸的R1蒸馏模型。 在编程能力方面,QwQ-32B 在LiveCodeBench上获得了63.4分&…...

【CXX】5.4 属性
命名空间 顶层的 cxx::bridge 属性宏接受一个可选的命名空间参数,用于控制生成外部 Rust 项的 C 命名空间,以及期望找到外部 C 项的命名空间。 #[cxx::bridge(namespace "path::of::my::company")] mod ffi {extern "Rust" {type…...