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

RSA算法

一、算法概述

RSA属于"非对称加密"算法,与传统的对称加密不同,它使用一对密钥:公钥和私钥。公钥可以公开分享,用于加密数据;而私钥必须严格保密,用于解密数据。这种特性使得RSA成为安全通信的理想选择。

二、密钥生成流程

1. 选择两个大素数

首先随机选择两个大素数p和q。在实际应用中,这些素数通常有数百位长,以保障安全性。

p = 61  // 示例用的素数,实际应用中要大得多
q = 53

2. 计算模数n

计算n = p × q。这个n将作为公钥和私钥的一部分。

n = p × q = 61 × 53 = 3233

3. 计算欧拉函数φ(n)

欧拉函数φ(n)表示小于n且与n互质的正整数的个数。对于n = p×q,φ(n) = (p-1)(q-1)

φ(n) = (p-1)(q-1) = 60 × 52 = 3120

4. 选择公钥指数e

选择一个整数e,满足:

  • 1 < e < φ(n)

  • e与φ(n)互质(即gcd(e, φ(n)) = 1)

通常选择65537(0x10001),因为它计算效率高且安全性好。

e = 17  // 示例值

5. 计算私钥指数d

d是e关于φ(n)的模反元素,即满足:
d × e ≡ 1 mod φ(n)

这可以通过扩展欧几里得算法计算得出。

d = 2753  // 因为17 × 2753 = 46801 ≡ 1 mod 3120

6. 最终密钥对

  • 公钥:(n, e) = (3233, 17)

  • 私钥:(n, d) = (3233, 2753)

三、加密过程

假设Bob想发送加密消息给Alice:

  1. Alice将自己的公钥(n, e)发送给Bob

  2. Bob将消息转换为整数m(0 ≤ m < n)

  3. Bob计算密文c = mᵉ mod n

  4. Bob发送c给Alice

示例
假设m = 65(ASCII字符'A')
c = 65¹⁷ mod 3233 = 2790

四、解密过程

Alice收到密文后:

  1. 使用私钥(n, d)计算m = cᵈ mod n

  2. 将整数m转换回原始消息

示例
m = 2790²⁷⁵³ mod 3233 = 65

http://www.xdnf.cn/news/967267.html

相关文章:

  • 第4章 对象与类
  • 基于51单片机的热敏电阻测温及温度调控系统
  • SpringBoot项目使用Redis作为数据缓存
  • 业务:资产管理功能
  • 亚远景-ASPICE评估标准解析:汽车软件开发的过程能力模型
  • 【Java多线程从青铜到王者】懒汉模式的优化(九)
  • WebLogic简介
  • 第6章 方法 笔记
  • DevSecOps实践:CI/CD流水线集成SAST工具的完整指南
  • 【LeetCode】二叉树相关算法题
  • 笔记 软件工程复习
  • Vue.js教学第二十二章:vue实战项目商城项目
  • el-upload组件,上传文件失败,:on-error方法失效
  • 人工智能与大数据融合发展:新一代智能系统的演进路径
  • 计算机行业光辉开始暗淡
  • Unity3D中Gfx.WaitForPresent优化方案
  • 性能监控的核心要点
  • RestClient
  • AI书签管理工具开发全记录(二十):打包(完结篇)
  • 零基础学前端-传统前端开发(第一期-开发软件介绍与本系列目标)(VScode安装教程)
  • 群晖Nas - Docker(ContainerManager)上安装GitLab
  • Linux内核 -- INIT_WORK 使用与注意事项
  • Windows 文件路径与文件名限制
  • 如何根据excel表生成sql的insert脚本
  • ABP vNext + Hive 集成:多租户大数据 SQL 查询与报表分析
  • 【iOS】cell的复用以及自定义cell
  • 使用NNI剪枝工具对VGG16网络进行剪枝,同时使用知识蒸馏对剪枝后结果进行优化。(以猫狗二分类为例)
  • 认证与授权的区别与联系
  • 看板任务描述不清如何解决
  • 数据库学习笔记(十五)--变量与定义条件与处理程序