密码学基础 -- RSA加密、签名填充模式解析(终极图解版)

news2024/12/24 21:06:50

目录

1. OAEP

1.1 加密过程

1.2 解密过程

2 PSS

2.1 签名流程

2.2 验签流程

3.小结


1. OAEP

填充模式OAEP(Optimal Asymmetric Encryption Padding),仅用于加解密。

1.1 加密过程

使用该填充模式进行加密总共分为三大步骤:

(1)数据长度检查

检查Lable长度是否超过所选Hash函数所能计算的长度,本程序中默认label长度为0;

检查待加密消息m字节长度是否超过 k(模数长度)-2*hLen(所选哈希函数摘要长度)-2;例如使用MGF(mask generation function)选择SHA512时,使用1024bit长度的密钥就不能进行加密。

(2)基于EME-OAEP进行数据编码和填充

具体流程如下:

图 1 OAEP填充流程

DB:data block;PS:Padding string;EM:encoded message

  • 如果检查到输入的label为空,那么对应Hash值如下:

MD 5 =    d41d8cd9 8f00b204 e9800998 ecf8427e

SHA-1 =   da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709

SHA-256=  e3b0c442 98fc1c14 9afbf4c8 996fb924

                   27ae41e4 649b934c a495991b 7852b855

SHA-384=  38b060a7 51ac9638 4cd9327e b1b1e36a

                   21fdb711 14be0743 4c0cc7bf 63f6e1da

                   274edebf e76f65fb d51ad2f1 4898b95b

SHA-512=  cf83e135 7eefb8bd f1542850 d66d8007

                   d620e405 0b5715dc 83f4a921 d36ce9ce

                   47d0d13c 5d85f2b0 ff8318d2 877eec2f

                   63b931bd 47417a81 a538327a f927da3e

  • 生成PS字节串,长度为k-mLen-2*hLen -2,填充为00;
  • 拼接DB = lHash || PS || 0x01 ||M;
  • 生成与Hash函数摘要相同的随机数Seed,通过MGF进行摘要计算后和DB进行异或,作为MaskedDB;
  • MaskedDB经过MGF再次进行摘要计算后与Seed进行异或,得到MaskedSeed;
  • 拼接EM = 00||MaskedSeed||MaskedDB,得到最终的编码消息

 (3)使用公钥进行RSAEP加密,得到密文C = m^e mod n ,(n,e)为公钥参数

1.2 解密过程

解密过程同样也分为三个大步骤:

(1)长度检查:

  • 如果密文长度不能模数长度,返回错误,不进行下一步;
  • 如果模数长度小于2* hLen +2,则返回错误。

(2)RSA解密,公式 m = C^d mod n,d为私钥幂数、n为模数;

(3)最后解码解密出来的明文M,如下图所示:

图 2 OAEP解码过程

  • 根据所选Hash函数对Label生成lHash值,根据加密时EM的数据结构将M拆成 Y || maskedSeed || maskedDB;Y为单字节,maskedDB长度为模数k - hLen - 1,maskedSeed 为Hash长度。使用mgf对maskedDB做运算,得到seedMask;
  • SeedMask xor MaskedSeed得到Seed;
  • Seed通过mgf得到dbMask;
  • MaskedDB xor dbMask得到最终的明文,然后根据字节长度截取出M,最后得到效果如下:

图 31 OAEP填充模式加解密效果

2 PSS

填充模式PSS(Probabilistic Signature Scheme),仅用于签名验签。

如选用PSS进行签名、验签,程序中盐值长度配置为DIGEST_LENGTH;mgf支持MD5、SHA224\256\384\512,与签名使用的Hash函数一致。

2.1 签名流程

其签名流程如下:

(1)根据PSS需求将原始数据M进行编码,得到与模数相当长度的数据块EM,编码规则如下图所示:

图 3 PSS填充过程

特别注意,

Pad1 = 0x0000 0000,

Pad2 = 0x00.... || 01,需要填充至模数长度k-len(maskedSeed)-1。

(2)然后使用私钥对EM进行加密,得到最终签名s = m^d mod n;

2.2 验签流程

验签过程就是对签名进行解密,然后比对EM的过程,具体不再赘述, 如下图所示:

图 4 PSS验签过程

最终效果如下图所示:

3.小结

 一般来讲,RSA多用在数字签名上,加解密上首先是能加解密的数据长度受限于模数长度,其次就是性能问题。

那么在数字签名领域,多推荐用PSS填充方式,契合版本RFC 3447:PKCS#1 v2.1,至于以前老版本PKCS#1 v1.5的填充Muscle v01也是可以兼容的。

PSS看起来是要比PKCS#1 v1.5签名填充更为复杂,有兴趣可以回顾:为什么RSA公钥加密结果不是固定值?_rsa加密每次结果一样吗-CSDN博客

        图5 PKCS#1V15签名填充

但从安全性角度来看,由于其可变长度的盐值Salt的不确定性,伪造签名更加困难,同时在2001有专家专门针对PSS发表安全证明论文;

值得一提的是,如果盐值为0,那么签名值就变成唯一确定的。

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

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

相关文章

21世纪中国思想家姓名学大师颜廷利:世界最具影响力的华人之一

21世纪中国思想家姓名学大师颜廷利:世界最具影响力的华人之一 在2024年的世界姓名学界,颜廷利教授无疑是一颗耀眼的星星。他的名字频繁出现在各大排行榜上,被誉为网上最靠谱的改名大师之一。这位来自山东济南的文化名人,凭借其深…

TVS管(瞬态电压抑制二极管)的了解

TVS即Transient Volatge Suppressor,中文名称:瞬态电压抑制二极管,又称雪崩击穿二极管。但在通常情况下,我们称之为TVS二极管。其在电路中的作用主要是保护敏感电路,免受高电压瞬变损坏的组件。其中,大部分…

【python】Django运行报错分析:ImproperlyConfigured 错误解决办法

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

docker安装及使用

一、docker优点及作用 优点: 基础镜像MB级别创建简单隔离性强启动速度秒级移植与分享放便 作用:资源隔离 cpu、memory资源隔离与限制访问设备隔离与限制网络隔离与限制用户、用户组隔离限制 二、docker安装 2.1.配置yum源 yum install -y yum-uti…

sheng的学习笔记-AI-k近邻学习(kNN)

AI目录:sheng的学习笔记-AI目录-CSDN博客 什么是k近邻学习 k近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法,是一种基本的分类与回归方法。 分类问题:对新的样本,根据其 k 个…

aiOla推出超快 “多头 “语音识别模型,击败OpenAI Whisper

今天,以色列人工智能初创公司 aiOla 宣布推出一种新的开源语音识别模型,其速度比 OpenAI 著名的 Whisper 快 50%。 该模型被正式命名为 Whisper-Medusa,它建立在 Whisper 的基础上,但使用了一种新颖的 "多头关注 "架构…

为什么企业越来越看重懂管理的网络安全人才?

说实话,要是几年前有人跟我说网安人才还得懂管理,我可能会嗤之以鼻。网安不就是搞技术的吗?整天跟漏洞、防火墙、IDS打交道,为啥又扯到管理了? 但是仔细一想,好像时代确实变了。 由于现在的就业局势紧迫&a…

通过高德JS API 实现呼吸点

效果图: 核心代码: <script lang="ts" setup>import { onMounted, onUnmounted, ref } from vue;import AMapLoader from @amap/amap-jsapi-loader;import redImage from @/assets/images/red.png;import orangeImage from @/assets/images/orange.png;impo…

免费的剪辑软件稍微变味了!洞见满分作文:立秋,沉淀自己——早读(逆天打工人爬取热门微信文章解读)

8U&#xff1a;钓鱼调到这玩意怎么办呢&#xff1f; 引言Python 代码第一篇 洞见 立秋&#xff0c;沉淀自己第二篇 免费的剪辑软件稍微变味了结尾 引言 昨天文章的数据一般 还望觉得有用的多点点赞哈 我是觉得 既然我们有理想 那么就应该多聚集有共同理想的人&#xff01; 有主…

数据库表水平分割和垂直分割?

0.数据库表的水平分割和垂直分割是两种常见的数据库优化技术&#xff0c;‌它们分别针对不同的场景和需求进行数据表的拆分。‌ 1. 水平分割&#xff08;‌Horizontal Splitting&#xff09;‌主要是按照记录进行分割&#xff0c;‌即不同的记录被分开保存在不同的表中&#x…

Python面向对象编程之多重继承和MRO深入解析

概要 Python是一种面向对象的编程语言,其类继承机制为开发者提供了强大的工具来构建复杂的系统。多重继承允许一个类从多个基类继承属性和方法,而方法解析顺序(MRO)决定了在多重继承情况下方法的调用顺序。本文将详细介绍Python中的多重继承和方法解析顺序,涵盖基本概念、…

[MRCTF2020]Ezpop

[MRCTF2020]Ezpop 题目是pop&#xff0c;考的其实就是pop链&#xff0c;可以自己先学学&#xff0c;啥也不会QAQ php反序列化之pop链_pop3.phpwelcome-CSDN博客 POP 面向属性编程(Property-Oriented Programing) 常用于上层语言构造特定调用链的方法&#xff0c;与二进制利用…

sql注入复现(1-14关)

目录 第一关&#xff08;字符型注入&#xff09; 第二关&#xff08;数字型注入&#xff09; 第三关&#xff08;闭合方式不同&#xff09; 第四关&#xff08;用双引号闭合&#xff09; 第五关&#xff08;不会数据回显&#xff09; 第六关&#xff08;闭合方式不同双引…

Mac角色扮演游戏:仙剑奇侠传四 for Mac v1.1 中文移植版

仙剑奇侠传四游戏的背景设定在十九年前&#xff0c;琼华派利用望舒和羲和双剑网缚妖界&#xff0c;引发人妖大战。游戏的主角是云天河&#xff0c;他在青鸾峰长大&#xff0c;与韩菱纱、柳梦璃和慕容紫英一起踏上了寻仙之路。在这个过程中&#xff0c;他们遇到了各种挑战&#…

事件驱动架构-七巧低代码入门01

事件驱动架构&#xff08;Event-Driven Architecture&#xff0c; EDA&#xff09;是一种软件架构模式&#xff0c;它强调系统内各个组件之间通过事件或消息进行通信和协作。在事件驱动架构中&#xff0c;系统的各个部分&#xff08;服务、组件等&#xff09;不直接调用彼此的方…

基于深度学习的大规模MIMO信道状态信息反馈

MIMO系统 MIMO系统利用多个天线在发送端和接收端之间建立多条独立的信道&#xff0c;从而使得同一时间可以传输多个数据流&#xff0c;从而使得同一之间可以传输多个数据流&#xff0c;提高数据传输速率。 优势 增加传输速率和容量&#xff0c;提高信号覆盖范围和抗干扰能力…

关于keil程序无法进入main函数问题

情况&#xff1a;之前烧写没问题&#xff0c;不然再次烧写的稍后显示boot损坏。 原因&#xff1a;发现kill掉所有断点再编译会导致bootloader失效 所以编译的时候&#xff0c;如果没有断点不要去执行1按钮 kill 断点&#xff0c;否则boot会失效&#xff0c;进不去main函数 解决…

物联网井盖-智能井盖-旭华智能

在智慧城市的大背景下&#xff0c;每一个细节都可能成为改变城市的契机。今天&#xff0c;我们就来聊聊那些不起眼却极其重要的城市守护者——物联网智慧井盖。它们不仅为城市管理带来了前所未有的便捷&#xff0c;也为环保事业贡献了一份力量。 什么是物联网智慧井盖&#xf…

【Foundation】(五)transformers之Evaluate

文章目录 0、介绍1、基本使用2、加载评估函数3、查看函数说明4、评估指标计算——全局计算5、评估指标计算——迭代计算6、多个评估指标计算7、评估结果可视化 0、介绍 简单易用的机器学习模型库&#xff0c;只需要一行代码便可加载任务任务的评估函数 1、基本使用 查看支持的…

SAP MM学习笔记 - 豆知识03 - 安全在库和最小安全在库,扩张物料的保管场所的几种方法,定义生产订单的默认入库保管场所,受注票中设定禁止贩卖某个物料

上一章讲了一些MM模块的豆知识。 - MR21 修改物料原价 - MM02 修改基本数量单位/评价Class - MMAM 修改物料类型/评价Class SAP MM学习笔记 - 豆知识02 - MR21 修改物料原价&#xff0c;MM02 修改基本数量单位/评价Class&#xff0c;MMAM 修改物料类型/评价Class-CSDN博客 …