密码学基础 -- 走进RSA(2)(放弃数学原理版)

目录

1.概述

2. RSA测试

 2.1 加解密实验

 2.2 签名验签测试

3. RSA原理简介 

4.小结


1.概述

从上面密码学基础 -- 走进RSA(1)(放弃数学原理版)-CSDN博客我们知道了非对称算法的密钥对使用时机,那么接下里我们继续讲解RSA,我们分别从RSA加解密、签名验签以及其原理概述入手

2. RSA测试

我们从一个具体的RSA签名试验开始认识其原理。 在之前文章,我们已经生成了基于RSA的密钥对,格式如下:

但是这一堆乱码简直没办法分析,所以我们通过openssl将密钥对hex数据打印出来,如下:

公钥Hex数据 

 私钥Hex数据

公钥里包含了模数(Modulus)、指数(Exponent);

私钥包含了模数(Modulus)、私钥指数(privateExponent)、公钥指数(publicExponent)、prime(质数)1\2、exponent(指数)1\2、系数(coefficient).

 根据RFC8017定义,并结合示例,可以总结公私钥的构成如下:

 2.1 加解密实验

首先使用openssl对demo.txt进行加密,生成密文文件demo.en,如下:

然后使用私钥进行解密,得到demo_enc.txt,如下:

 2.2 签名验签测试

 首先使用openssl对文档signDemo.txt进行签名,得到签名hex,如下:

然后进行验签,得到验签结果,如下:

3. RSA原理简介 

有了上述测试,我们对RSA有了感性认识,接下来就讲点纯理论的东西。

RSA是由麻省理工的Rivest、Shamir和Adleman在1978年提出,其数学基础用到了欧拉定理,安全性由大因子分解十分困难保证,利用了单向陷门函数的原理,具体如下:

其中{e,n}表示公钥,{d,n}表示私钥。

该算法安全在哪里呢?在于私钥难以被破解。 

该算法生成密钥的过程如下:

  1. 选择两个大素数p和q(通常要求每个素数均大于10的100次方)
  2. 计算一个 n = p * q ,φ(n) = (p-1)*(q-1)
  3. 在(1,φ(n))之间找到一个整数e,该数与φ(n)互质;e作为公钥
  4. 根据e和φ(n)计算出私钥d,必须满足 e*d mod φ(n) = 1;密钥对 {{e,n} , {d,n}}
  5. 将明文划分成块,记为m,保证每个明文的长度 len(m) < n
  6. 加密过程:c = m^e mod n  (加密需要公钥e 和 n)
  7. 解密过程:m = c^d mod n   (解密需要私钥d 和 n)

以上述为例:攻击者可以容易获取到的数据有密文c、模数n和公钥e,几乎不能获取私钥d; 解密需要私钥d,d是根据e和φ(n)计算得来,n有p和q计算得出 因此需要对n进行因子分解,找出两个素数p和q 例如 21,很容易得出两个素数3 和7,但如果n为2048bit的整数,目前从数学角度难解决。

4.小结

上面文章,我们讲述了非对称算法的加解密、签名验签的原理,并做了相关测试工作;从数学角度讲述了RSA密钥生成原理,并且详细阐述了RSA中每个字母的含义。

这对基于硬件密码加速引擎实现非对称算法具有非常强的参考意义。

一般来讲,HSM所能提供的非对称算法的硬件加速功能通常只包含数学运算,例如加减乘除、模数运算等等,我们要实现RSAES、RSASSA、ECDSA等算法,是需要利用这些运算加速来实现公式的,举个例子,假设要实现RSA签名工作,首先需要调用Hash加速器来生成摘要,然后通过调用模幂运算来对摘要进行加密,这就需要我们理解模数、指数应该分别放到指定的寄存器里以供非对称引擎调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云消息队列升级全新品牌 ApsaraMQ丨阿里云云原生 3 月产品月报

云原生月度动态 云原生是企业数字创新的最短路径。 《阿里云云原生每月动态》&#xff0c;从趋势热点、产品新功能、服务客户、开源与开发者动态等方面&#xff0c;为企业提供数字化的路径与指南。 趋势热点 &#x1f947; 阿里云 ApsaraMQ 率先完成消息队列全系 Serverles…

科大讯飞星火开源大模型iFlytekSpark-13B GPU版部署方法

星火大模型的主页&#xff1a;iFlytekSpark-13B: 讯飞星火开源-13B&#xff08;iFlytekSpark-13B&#xff09;拥有130亿参数&#xff0c;新一代认知大模型&#xff0c;一经发布&#xff0c;众多科研院所和高校便期待科大讯飞能够开源。 为了让大家使用的更加方便&#xff0c;科…

leetcode-链表中间节点

876. 链表的中间结点 题目 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表只有一个中间…

12.MySQL应用架构演变

MySQL应用架构演变 1.总览 单机单库主从架构分库分表云数据库 2.单机单库 介绍 一个简单的小型网站或者应用背后的架构可以非常简单&#xff0c;数据存储只需要一个MySQL Instance就能满足数据读取和写入需求&#xff08;这里忽略掉了数据备份的实例&#xff09;&#xff…

[pytorch基础操作] 矩阵batch乘法大全(dot,* 和 mm,bmm,@,matmul)

逐元素相乘torch.dot* 矩阵乘法torch.mmtorch.bmm 和 torch.matmul 逐元素相乘 逐元素相乘是指对应位置上的元素相乘&#xff0c;要求张量的形状相同。 torch.dot 按位相乘torch.dot&#xff1a;计算两个张量的点积&#xff08;内积&#xff09;&#xff0c;只支持1D张量&am…

三款好用的 Docker 可视化管理工具

文章目录 1、Docker Desktop1.1、介绍1.2、下载地址1.3、在Windows上安装Docker桌面1.4、启动Docker Desktop1.5、Docker相关学习网址 2、Portainer2.1、介绍2.2、安装使用 3、Docker UI3.1、介绍3.2、安装使用3.2.1、常规方式安装3.2.2、通过容器安装 Docker提供了命令行工具&…

Linux运维面试

Linux面试题&#xff08;运维人员必备技能&#xff09; 1、现在给你三百台服务器&#xff0c;你怎么对他们进行管理&#xff1f; 管理3百台服务器的方式&#xff1a; 1&#xff09;设定跳板机&#xff0c;使用统一账号登录&#xff0c;便于安全与登录的考量。 2&#xff09;使…

【vue】购物车案例

change"fun"&#xff1a;元素值发生改变时&#xff0c;会触发事件fun <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale…

Qt创建基于应用程序的插件

应用程序插件 什么是插件插件的好处插件的种类应用程序插件创建应用程序的插件步骤:创建测试插件的应用程序步骤:应用程序插件示例开发环境创建示例生成插件运行结果总结什么是插件 插件是一种用于应用程序功能扩展和增强,且按照特定规范编写的应用程序接口的程序。 插件的…

linux 自定义快捷指令(docker

vi /root/.bashrc alias disdocker images alias dpsdocker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}" 保存退出后使用sourece /root/.bashrc 让其立即生效 sourece /root/.bashrc

Python学习笔记(37)——用xlwings库生成excel

老规矩先pip入xlwings库 STEP1:下载xlwings库 windowsr>>cmd>>pip install xlwings (如果需要不同版本可以到pypi上搜&#xff09; STEP2:完成EXCEL初级创建 请打开您的编写软件~~~~~&#xff08;小编的显示结果为PYCHARM编写的&#xff0c;因为颜色标注好看(…

【论文笔记】PointMamba: A Simple State Space Model for Point Cloud Analysis

原文链接&#xff1a;https://arxiv.org/abs/2402.10739 1. 引言 基于Transformer的点云分析方法有二次时空复杂度&#xff0c;一些方法通过限制感受野降低计算。这引出了一个问题&#xff1a;如何设计方法实现线性复杂度并有全局感受野。 状态空间模型&#xff08;SSM&…

进程控制(二)

文章目录 1. 进程程序替换1.1 替换原理1.2 替换函数1.2.1 execl函数1.2.2 execv函数1.2.3 execlp函数1.2.4 execvp函数1.2.5 临时总结1.2.6 execle函数2. 函数解释3.命名理解1. 进程程序替换 1.1 替换原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代…

蓝桥杯 — — 纯质数

纯质数 题目&#xff1a; 思路&#xff1a; 一个最简单的思路就是枚举出所有的质数&#xff0c;然后再判断这个质数是否是一个纯质数。 枚举出所有的质数&#xff1a; 可以使用常规的暴力求解法&#xff0c;其时间复杂度为&#xff08; O ( N N ) O(N\sqrt{N}) O(NN ​)&…

SQL12 获取每个部门中当前员工薪水最高的相关信息

题目&#xff1a;获取每个部门中当前员工薪水最高的相关信息 注意了&#xff0c;这道题目&#xff0c;分组函数只能查出来&#xff1a;每个部门的最高薪水&#xff0c;group by dept_no &#xff0c;根据部门分组&#xff0c;绝对不能group by dept_no,emp_no&#xff0c;不能…

.Net使用Elastic.Clients.Elasticsearch连接Elasticsearch8

文章目录 1、elasticsearch.yml配置2、生成证书指纹3、使用Elastic.Clients.Elasticsearch连接4、参考 1、elasticsearch.yml配置 单一节点配置 node.name: node-1path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearchnetwork.host: localhost http.port: 9…

Linux命令学习—linux 网络基础与网络服务管理

1.1、网卡的配置 1.1.1、修改网卡的配置文件 网卡配置文件的目录&#xff1a; /etc/sysconfig/network-scripts 网卡的配置文件类型&#xff1a; ifconfig-ethX 有线网卡的配置文件 ifconfig-ethX:X 有线网卡的虚拟网卡的配置文件 ifconfig-wlanX 无线网卡的配置文件 网…

学习一门语言的方法和套路(B站转述)

视频链接 up虽然长相英(ping)俊(ping)&#xff0c;但是讲的干活&#xff0c;没恰饭。 学习流程&#xff1a; 1.快速阅读&#xff0c;掌握概况 2.深入细节内容 例如&#xff1a;java (JDBC)、html 、netty 不管三七二十一&#xff0c;先了解套路&#xff0c;再深入研究。 高…

2024软考中项考哪个版本?应该该如何备考?

2024年1月&#xff0c;备受瞩目的软考中级系统集成项目管理工程师官方教程终于迎来了久违的大改版。为确保广大考生能够有充足的准备时间&#xff0c;软考中项的考试时间被顺延至同年11月&#xff0c;届时&#xff0c;这也将成为软考中项首次依据第3版考纲进行的考试。 新教材核…

计算机网络之CIDR

快速了解CIDR CIDR 表示的是什么&#xff1f; 单个IP地址&#xff1a;当你看到一个CIDR表示法&#xff0c;如192.168.1.1/32&#xff0c;它表示一个单独的具体IP地址。/32表示所有32位都是网络部分&#xff0c;没有主机部分&#xff0c;因此它指的是单一的IP地址。 一个IP地址…