RSA 加密算法原理简述

2023-11-04

概述

  本文旨在说明RSA加密算法的原理及实现,而其相关的数学部分的证明则不是本文内容。

 

版权说明

著作权归作者所有。

商业转载请联系作者获得授权,非商业转载请注明出处。

作者:Q-WHai

发表日期: 2016年2月29日

本文链接:http://blog.csdn.net/lemon_tree12138/article/details/50696926

来源:CSDN

更多内容:分类 » 数据加密与信息安全

 

RSA简介

  1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法"。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。

                                                                                   -- 摘自网络

 

数学背景

  此部分旨在补充本文的完整性。如果说你已经了解,或是不想了解此部分内容。那么可以直接跳过此部分的阅读。

  虽说只是补充说明(只能是补充的原因是因为博主的数学也是比较差的-_-!!!),但是此部分的内容却是相当重要的。博主还是希望可以重新阅读一下此部分。

1.互质

  从小学开始,我们就了解了什么是质数。互质是针对多个数字而言的,如果两个正整数,除了1以外,没有其他公因子,那么就称这两个数是互质关系(注意,这里并没有说这两个数一定是质数或有一个为质数。比如15跟4就是互质关系)。以下有一些关于质数与互质的性质:

 

  • 质数只能被1和它自身整除
  • 任意两个质数都是互质关系
  • 如果两个数之中,较大的那个数是质数,则两者构成互质关系
  • 如果两个数之中,较小的那个数是质数,且较大数不为较小数的整数倍,则两者构成互质关系
  • 1和任意一个自然数是都是互质关系
  • p是大于1的整数,则p和p-1构成互质关系
  • p是大于1的奇数,则p和p-2构成互质关系

 

2.欧拉函数

  欧拉函数是求小于x并且和x互质的数的个数。其通式为:φ(x) = x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn)

  其中p1, p2……pn为x的所有质因数,x是不为0的整数。看到这里是不是有一些头疼,太理论的东西的确不够具象。我们且不去理会后面公式计算与论证,因为已经超出本文的范围了。就前一句来说说吧,欧拉函数是求小于x并且和x互质的数的个数。这里我可以列举一个例子:

  令x = 16,那么x的所有质因数为:φ(16) = 16 * (1 - 1/2) = 8

  我们也可以枚举出所有比16小,且与16互质的数:1, 3, 5, 7, 9, 11, 13, 15

  现在也给出部分欧拉函数的性质:

 

  • 若n是素数p的k次幂,,因为除了p的倍数外,其他数都跟n互质
  • 欧拉函数是积性函数——若m,n互质,
  • 当n为奇数时,
  • p是素数,,φ(p)称为p的欧拉值

 

  欧拉函数更多参考请见这里的链接

 

3.模反元素

定义:如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。

关于模反元素的求解,使用的是朴素的解法。如果读者想要更进一步了解的话,请自行搜索其他解法(比如:辗转相除法、欧几里德算法)。

 

RSA原理

  在RSA原理之前,我想还是有必要了解一下非对称加密算法的加密跟解密过程。下面就是一幅非称加密算法的流程图。

  

  在此可以看到,非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥用于加密,私钥用于解密。对于非对称的加密和解密为什么可以使用不同的密钥来进行,这些都是数学上的问题了。不同的非对称加密算法也会应用到不同的数学知识。上面也对RSA中使用的数学问题做了一个小小的介绍。现在就来看看RSA算法是怎么来对数据进行加密的吧,如下是一幅RSA加密算法流程及加密过程图。

  

 

RSA算法优点

  1. 不需要进行密钥传递,提高了安全性
  2. 可以进行数字签名认证

RSA算法缺点

  1. 加密解密效率不高,一般只适用于处理小量数据(如:密钥)
  2. 容易遭受小指数攻击

 

其他加密算法相关参考:

 

AES 加密算法的原理详解:https://blog.csdn.net/gulang03/article/details/81175854

Java实现AES和RSA算法:https://blog.csdn.net/gulang03/article/details/81771341

 

JS 与 JAVA 跨语言实现 RSA 和 AES加密算法:https://blog.csdn.net/gulang03/article/details/82230408

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RSA 加密算法原理简述 的相关文章

  • [信息论与编码理论专题-2]:信息与熵

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 118526747 前言 什么是
  • 解决网页多次经过请求数据后,Ajax请求被挂起

    问题描述 网页多次通过Ajax向后端发送后 突然无法发送请求了 后端和前端网页都没有明显的报错 查看网页的网络请求 发现后面发送的请求被挂起 问题分析 单个测试网页功能时没有任何问题 可以正常可发送请求后获取数据 说明Ajax的编写没有问题
  • 第六章 PCB 的 DRC 检查、拼版设计及资料输出

    目录 第六章 PCB 的 DRC 检查 拼版设计及资料输出 6 1 DRC 的检查及丝印的调整 6 2 拼板介绍 6 3 V Cut 和邮票孔的概念 6 4 拼板的实战演示 6 5 Gerber 文件的输出及整理 第六章 PCB 的 DRC
  • 记一次失败的regeorg+proxifiler代理实验--解决内网主机不出网问题

    记一次失败的regeorg proxifiler代理实验 解决内网主机不出网问题 一 简述 二 环境 三 流程 3 1 种webshell 3 2 启动regeorg 3 3 配置proxifiler 3 3 1 配置代理服务器 3 3 2
  • UNI-APP_横屏切换竖屏出现样式混乱问题

    app从竖屏页面1进入竖屏页面2 再进入横屏 再返回 再返回从新回到竖屏页面1 再次进入竖屏页面2 发现竖屏页面2的所有图片字体都被放大了 再返回竖屏1 再进入竖屏2 一切又恢复正常 解决跳转横屏竖屏样式放大错乱问题 解决方法 不要使用un
  • 前端部署:vue跨域配置、打包、nginx本机&远程访问

    vue版本 npm版本 2 6 11 8 1 2 前排感谢大佬 最全vue打包前后的跨域问题 绝对解决你的问题 0 项目说明 服务器和访问其的电脑同属校园网内网中 1 vue跨域配置 两种跨域方式均可 这里采用跨域2 1 1 vue con
  • 【Java】list对象(类)按某个属性排序

    这里采用的方法是 将要排序的类实现Comparable接口 具体如下 假设有个rule类 要按照sort字段排序 首先该类要实现Comparable接口 并实现它的compareTo 方法 Author EvanChen Date 2018
  • java连接kafka测试

    进入到kafka文件夹中修改配置文件 vim config server properties 启动zookeeper bin zookeeper server start sh config zookeeper properties 端口
  • python mssql数据库开发_Python实现的连接mssql数据库操作示例

    本文实例讲述了Python实现的连接mssql数据库操作 分享给大家供大家参考 具体如下 1 目标数据sql2008 R2 ComPrject gt TestModel 2 安装python 连接mssql 模块 运行 pip instal
  • 小程序hover-class点击态效果——小程序体验

    微信小程序设置 hover class 实现点击态效果 增强小程序触感 提高用户交互感知度 概念及注意事项 微信小程序中 可以用 hover class 属性来指定元素的点击态效果 但是在在使用中要注意 大部分组件是不支持该属性的 目前支持
  • Spring Cache

    Spring Cache Spring Cache使用方法与Spring对事务管理的配置相似 Spring Cache的核心就是对某个方法进行缓存 其实质就是缓存该方法的返回结果 并把方法参数和结果用键值对的方式存放到缓存中 当再次调用该方
  • Cisco Voip实验

    http hackerjx blog 51cto com 383839 248031 转载于 https blog 51cto com markyan 1043695
  • Java基础-I/O流(文件字节流)

    字符串常见的字符底层组成是什么样的 英文和数字等在任何国家的字符集中都占1个字节 GBK字符中一个中文字符占2个字节 UTF 8编码中一个中文字符占3个字节 注意 编码前的字符集和编码好的字符集要必须一致 否则会出现中文字符乱码 英文和数字
  • NullPointerException : HiveAuthorizerImpl.checkPrivileges(HiveAuthorizerImpl.java:85)

    背景 做hive sentry LDAP授权 1 jdbc hive2 localhost 10000 gt connect jdbc hive2 localhost 10000 Connecting to jdbc hive2 local
  • Gitlab中Pipeline语法三

    Pipeline语法三 only except rules workflow only和except 用分支策略来限制jobs构建 only 定义哪些分支和标签的git项目将会被job执行 except定义哪些分支和标签的git项目将不会被
  • 腾讯云对象存储的创建和S3 Browser的使用

    简述 想想第一次接触对象存储的时候还是很兴奋的 同时也是一脸懵逼 然后开始网上疯狂的找资料 但因为客户当时给的文档写的是关于Amazon S3之类的 所以自以为的就只有Amazon S3这一家 接着开始查资料 经过一番努力最后在Amazon
  • ubuntu下下载安装dstat

    如果直接安装采用s sudo apt install dstat 或者通过下载方式 https launchpad net ubuntu source dstat 0 7 4 6 1 下载这三个包 然后里面直接运行 dstat就可以了 前提
  • I3Net: Implicit Instance-Invariant Network for Adapting One-Stage Object Detectors

    摘要 最近的两阶段跨域检测工作广泛探索了局部特征模式 以获得更准确的适配结果 这些方法在很大程度上依赖于区域建议机制和基于ROI的实例级特性来设计关于前景目标的细粒度特性对齐模块 然而 对于一阶段检测检测器 在检测流程中很难甚至不可能获得显
  • 【Scapy】使用Python的Scapy包对Wirshark捕获的Http数据包进行解析(格式输出)

    通过Anaconda安装scapy pip install scapy http Python源码如下 实现功能 1 读取本地pcap文件 文件内容为Wirshark捕获的数据二进制流 2 通过scapy将二进制数据流解析为有结构的pake

随机推荐

  • 贪心算法解决集合覆盖问题

    问题描述 假设存在下面需要付费的广播台 以及广播台需要覆盖的地区 如何选择最少的广播台 让所有的地区都可以接受到信号 广播台 覆盖地区 k1 北京 上海 天津 k2 广州 北京 深圳 k3 成都 上海 杭州 k4 上海 天津 k5 杭州 大
  • python折线图设置标题

    在 Python 中使用 Matplotlib 绘制折线图时 可以使用 title 函数来设置图表的标题 例如 import matplotlib pyplot as plt 绘制折线图 plt plot x y 设置标题 plt titl
  • Android系统目录树建立过程

    一 文件系统类型 了解Android系统目录树的建立之前 有必要了解文件系统类型 Linux内核中将文件系统类型抽象为结构体struct file system type 其中name为文件系统名称 例如ext4 f2fs rootfs等
  • 学习笔记-接口测试(postman、jmeter)

    一 什么是接口测试 通常做的接口测试指的是系统对外的接口 比如你需要从别的系统来获取到或者同步资源与信息 他们会提供给你一个写好的接口方法供你调用 比如常用的app 用户同步这些在处理数据的时候需要通过接口进行调用 webService接口
  • 让HR眼前一亮:30个APP项目软件测试经验,点燃你的简历

    在求职过程中 我们都希望自己的简历能够吸引面试官的眼球 从而获得更多的面试机会 作为一名软件测试人员 丰富的实战经验是让自己脱颖而出的关键之一 在我多年从事APP项目软件测试的工作中 我积累了大量的实践经验 并成功将这些经验写入简历中 让自
  • 剑指 Offer 05. 替换空格

    题目链接 05 替换空格 思路分析 遍历判断即可 class Solution public string replaceSpace string s std ios sync with stdio false string tmp for
  • 谈谈ChatGPT对中国教育的影响与挑战,我们该怎么办?

    ChatGPT对中国教育的影响 1 个性化教学 通过分析学生的学习习惯和问题 AI可以为每个学生提供个性化的学习路径 例如 如果一个学生在数学上表现出困难 AI可以提供更多的数学练习和教学资源 2 在线教育 AI可以作为在线课程的一部分提供
  • 基于docker搭建ngrok私服

    经常开发微信的同学们 肯定会经常用到内网穿透 大部分人选择网上寻找各种现成的 比如ngrok官网 natapp sunny ngrok或者花生壳之类的 但是世界上没有免费的午餐 要不就是收费 要不就是免费但是偶尔会出现连接失败的问题 当然大
  • 第四届蓝桥杯国赛C++B组 格子刷油漆

    标题 格子刷油漆 X国的一段古城墙的顶端可以看成 2 N个格子组成的矩形 如图1所示 现需要把这些格子刷上保护漆 你可以从任意一个格子刷起 刷完一格 可以移动到和它相邻的格子 对角相邻也算数 但不能移动到较远的格子 因为油漆未干不能踩 比如
  • 模拟电路设计(3)--- 三极管之复合组态

    整理了一些电子工程类的资料 分享给大家 目前有模拟电路 单片机 PCB设计 FPGA EMC 物联网 Linux相关学习资料 还有针对大学生的资料包 后续还会有更多资料分享给大家 助力大家学习 成就梦想 博主福利 免费获取电子工程类学习资料
  • java超详细小程序对接微信支付(一),看完不会你打我

    1 微信支付接入前准备 这些其实和我们开发 没什么关系 直接找公司拿即可 商户已有微信小程序 用户通过好友分享或扫描二维码在微信内打开小程序时 可以调用微信支付完成下单购买的流程 注意 小程序不能通过拉起H5页面做jsapi支付 小程序内只
  • [2019计算机视觉]——贪心学院 学习笔记 【实验】2.1 使用逻辑函数 完成对购车的预测

    文章目录 问题引入 数据格式 解决方法 1 使用sklearn中的线性模型 2 创建逻辑回归对象 3 训练回归模型 4 使用训练好的模型进行预测 5 取出 theta 值 6 验证
  • vue3更换浏览器地址栏的 favicon.ico图标

    介绍 在vue 项目中 修改浏览器地址栏中的 icon 图标 默认是在根目录 index html中进行修改的 但是在 vue3以上版本中 直接替换这个 favicon ico图标是无法生效的 解决方式 找到 index html根文件 找
  • libcurl教程

    最近一段时间无事 等待入职 以前把libcurl的easy Interface 的那些函数用法手册翻译了 这次也把 libcurl tutorial翻译一下 多有不足 请多指教 原文是网址是 http curl haxx se libcur
  • [Java基础]ArrayList的contains方法,你用对了吗?

    最近在代码Review中发现 有同学错用了数组的contains方法 示例如下 public class ListItem private int id private String name public ListItem int id
  • for循环多个条件

  • 百度搜索中url的参数解析

    转载请注明 藏羚骸的博客 百度搜索中url的参数解析 小伙伴们在写爬虫程序的时候 可能会用到部分参数使用 这里整理了 百度搜索中url的参数解析 免费查询快递物流 wd 查询的关键词 pn 已显示的结果条数 即当前页从pn条记录开始显示 该
  • 轮询调度算法(Round-Robin Scheduling)

    轮询调度算法 Round Robin Scheduling 毫无疑问 随着互联网 移动网络接入成本的降低 互联网正在日益深入地走入我们的生活 越来越成为人们获取信息的高效平台 ICP行业也顺势呈现出强劲的成长趋势 成为互联网迅猛发展形势下最
  • 服务器被ddos攻击了怎么处理

    服务器被DDOS攻击是很常见的事情 但对于网站管理员来说 这可能是一件非常麻烦的事情 那么 当服务器被DDOS攻击时 我们应该怎么处理呢 第一步 尽快确定服务器是否真的被DDOS攻击了 可以使用网站监控工具或者联系服务器提供商确认情况 第二
  • RSA 加密算法原理简述

    概述 本文旨在说明RSA加密算法的原理及实现 而其相关的数学部分的证明则不是本文内容 版权说明 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 作者 Q WHai 发表日期 2016年2月29日 本文链接 http bl