首页 > 编程语言 >RSA非对称加解密算法填充方式(Padding)

RSA非对称加解密算法填充方式(Padding)

时间:2022-12-19 18:07:18浏览次数:33  
标签:加密 填充 加解密 RSA 明文 Padding 密文 长度


1. padding模式

1.1 三类常见填充方式

RSA加密常用的填充模式有三种:​​RSA_PKCS1_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_NO_PADDING。​

与对称加密算法DES,AES一样,RSA算法也是一个块加密算法( block cipher algorithm),总是在一个固定长度的块上进行操作。但跟AES等不同的是,block length是跟key length有关的。

每次RSA加密的明文的长度是受RSA填充模式限制的,但是RSA每次加密的块长度就是key length。

填充方式

输入

输出

条件

RSA_PKCS1_PADDING

必须 比 RSA 钥模长(modulus) 短至少11个字节, 也就是 RSA_size(rsa) – 11

和modulus一样长

RSA_PKCS1_OAEP_PADDING

RSA_size(rsa) – 41

和modulus一样长

RSA_NO_PADDING

可以和RSA钥模长一样长,如果输入的明文过长,必须切割, 然后填充

和modulus一样长

1.2 不同模式下的加密的最大数据长度

  • 在不同的padding模式下,使用相同长度的密钥可以加密的数据最大长度不同;
  • 在不同密钥长度下,使用相同的padding模式可以加密的数据最大长度也不同;

因此,脱离了密钥长度而讨论padding模式可以加密的最大长度是不严谨的。

常用的密钥长度有1024bits,2048bits等,理论上1024bits的密钥可以加密的数据最大长度为1024bits(即1024/8 = 128bytes)。2048bits的密钥可以加密的数据最大长度为2048bits(2048/8 = 256bytes),但是RSA在实际应用中不可能使用这种“教科书式的RSA”系统。实际应用中RSA经常与填充技术(padding)一起使用,可以增加RSA的安全性。填充技术实现的不好,RSA也不会安全。原因如下:

  1. RSA加密是确定的,即给定一个密钥,特定明文总会映射到特定的密文。攻击者可以根据密文中统计信息获取明文的一些信息。
  2. 填充技术如果比较弱,那么较小的明文和小型公开指数e将易于受到攻击。
  3. RSA有个特性叫做延展性,如果攻击者可以将一种密文转换为另一种密文,儿这种新密文会导致对明文的转换变得可知,这种特性并没有解密明文,而是以一种可预测的方式操纵了明文,比如:银行交易系统中,攻击者根据新密文,直接去修改原密文中金额的数据,可以在用户和接受方无法感知的情况下进行修改。
    所以,填充技术关系到RSA的安全性的高低。最优非对称填充(OAEP)就是一种优秀的填充方式,对应上述表格中RSA_PKCS1_OAEP_PADDING填充方式。


标签:加密,填充,加解密,RSA,明文,Padding,密文,长度
From: https://blog.51cto.com/u_15917617/5953442

相关文章

  • Versa CSG 300系列
    SASE的下一代产品VersaNetworks不销售VersaCSG设备。客户和合作伙伴必须通过分销渠道直接从制造商处购买CSG设备。VersaCSG300系列是为客户部署VersaSASE在中小型企业......
  • 【博学谷学习记录】超强总结,用心分享|接口加解密介绍
    一、介绍在做接口测试的时候,如果是外部用户直接能看到我们的参数,可能会造成接口不安全,比如直接用明文的参数请求接口,把参数自己定义,脏数据就会存到我们的数据库中,严重......
  • 网络信息安全 古典密码(仿射、PlayFair)DES RSA
     网络信息安全实验报告课程名称网络信息安全实验项目名称古典密码、对称密码、非对称密码实验时间(日期及节次)周五三、四节专业软件工......
  • 原生js实现rsa加密
    原生js实现rsa加密示例createNewUserKey().then(function(keyPairs){encrypt("thisisorigintext",keyPairs[0]).then(function(res){console.log('......
  • Universal-Image-Loader源码分析,及常用的缓存策略
    讲到图片请求,主要涉及到网络请求,内存缓存,硬盘缓存等原理和4大引用的问题,概括起来主要有以下几个内容:原理示意图   主体有三个,分别是UI,缓存模块和数据源(网络)。它们之间......
  • C# AES加解密
    ///<summary>///AES加密///</summary>///<paramname="key"></param>///<paramname="str"></param>///<returns></returns>public......
  • NewStarCTF-WEEK1-Crypto-ezrsa复现
    2022-NewStar-Week1-ezrsa复现题干assertlen(flag)%5==0cnt=len(flag)//5flags=[flag[cnt*i:cnt*(i+1)]foriinrange(5)]可知flag分五段。第一段m......
  • java.security.NoSuchAlgorithmException:Cannot find any provider supporting AES/C
    由于小程序开发的需求,需要在后台对微信接口返回的敏感信息加密数据进行解密,以便开发使用,但是,在解密时出现以下异常:java.security.NoSuchAlgorithmException:Cannotfindan......
  • Universal Console Redirector
    UniversalConsoleRedirector Downloaddemoproject-36.7KbIntroductionIwantedatrickconsoleoutputpanejustlikethatofDeveloperStu......
  • openssl实现非对称加解密
    使用openssl实现非对称加、解密:一、生成密钥,该密钥使用des3加密opensslgenrsa-outprivate.key-des32048二、生成对应公钥opensslrsa-inprivate.key-pubout-......