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 嵌入模…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
