转载:https://www.cnblogs.com/spencerN/archive/2012/10/18/2729602.html

在进行RSA运算时需要将源数据D转化为Encryption block(EB)。其中pkcs1padding V1.5的填充模式安装以下方式进行

(1) EB = 00+ BT+PS +00 + D

说明

EB:为转化后Hex进制表示的数据块,长度为128个字节(密钥1024位的情况下)

00:开头为00。个人认为应该是一个保留位。因为目前BT的类型至于三种(00,01,02)一个字节就可以表示。

BT:用一个字节表示,在目前的版本上,有三个值00 01 02,如果使用公钥操作,BT永远为02,如果用私钥操作则可能为00或01。

PS:为填充位PS由k-3-D这么多个字节构成,k表示密钥的字节长度,如果我们用1024bit的RSA密钥,这个长度就是1024/8=128 ,D表示明文数据D的字节长度

对于BT为00的,则这些字节全部为00,对于BT为01的这些值全部为FF,对于BT为02的,这些字节的值随机产生但不能是0字节(就是00)。

00:在源数据D前一个字节用00表示

D:实际源数据

公式(1)整个EB的长度就是密钥字节的长度。

对于BT为00的,数据D中的数据就不能以00字节开头,要不然会有歧义,因为这时候你PS填充的也是00,就分不清哪些是填充数据哪些是明文数据了
但如果你的明文数据就是以00字节开头怎么办呢?对于私钥操作,你可以把BT的值设为01,这时PS填充的FF,那么用00字节就可以区分填充数据和明文数据对于公钥操作,填充的都是非00字节,也能够用00字节区分开。如果你使用私钥加密,建议你BT使用01,保证了安全性。

对于BT为02和01的,PS至少要有8个字节长,BT为02肯定是公钥加密,01肯定是私钥加密,要保证PS有八个字节长
因为EB= 00+BT+PS+00+D=k

所以D<=k-11,所以当我们使用128字节密钥对数据进行加密时,明文数据的长度不能超过过128-11=117字节

当RSA要加密数据大于 k-11字节时怎么办呢?把明文数据按照D的最大长度分块然后逐块加密,最后把密文拼起来就行。

英文文档参考RFC 2313 PKCS #1: RSA Encryption


相关推荐:
         [crypto]-01-对称加解密AES原理概念详解
         [crypto]-02-非对称加解密RSA原理概念详解
         [crypto]-03-数字摘要HASH原理概念详解
         [crypto]-04-国产密码算法(国密算法sm2/sm3/sm4)介绍
         [crypto]-05-转载:PKCS #1 RSA Encryption Version 1.5介绍
         [crypto]-05.1-PKCS PKCS#1 PKCS#7 PKCS#11的介绍
         [crypto]-06-CA证书介绍和使用方法

[crypto]-30-The Armv8 Cryptographic Extension在linux中的应用
         [crypto]-31-crypto engion的学习和总结

[crypto]-50-base64_encode和base64_decode的C语言实现
         [crypto]-51-RSA私钥pem转换成der, 在将der解析出n e d p q dp dq qp
         [crypto]-52-python3中rsa(签名验签加密解密)aes(ecb cbc ctr)hmac的使用,以及unittest测试用
         [crypto]-53-openssl命令行的使用(aes/rsa签名校验/rsa加密解密/hmac)

[crypto]-90-crypto的一些术语和思考

[crypto]-05-转载:PKCS #1 RSA Encryption Version 1.5介绍相关推荐

  1. PKCS #1 RSA Encryption Version 1.5

    PKCS #1  RSA Encryption Version 1.5 在进行RSA运算时需要将源数据D转化为Encryption block(EB).其中pkcs1padding V1.5的填充模式 ...

  2. [crypto]-05.1-PKCS PKCS#1 PKCS#7 PKCS#11的介绍

    相关推荐:          [crypto]-01-对称加解密AES原理概念详解          [crypto]-02-非对称加解密RSA原理概念详解          [crypto]-03- ...

  3. [crypto]-02-非对称加解密RSA原理概念详解

    说明:本文使用的数据来自网络,重复的太多了,也不知道哪篇是原创. 算法原理介绍 step 说明 描述 备注 1 找出质数 P .Q - 2 计算公共模数 N = P * Q - 3 欧拉函数 φ(N) ...

  4. 示例 在 ABAP 中使用自己的 RSA 实现 RSA Encryption in ABAP

    在下面的程序中,我们使用公钥加密并使用私钥签名此消息"32字节秘密消息!". 结果显示在屏幕上. 它们保存在我们生成密钥以在 SAP 外部检查它们的同一文件夹中. 签名通常涉及对消 ...

  5. Crypto++库实现AES和RSA加密解密

    本文介绍使用Crypto++进行AES加密和RSA加密 Crypto++库在VS中配置方法 Crypto++库下载地址: https://www.cryptopp.com/, 目前已经更新到8.1版本 ...

  6. 使用Crypto++5.5.2完成RSA加解密,真正的把公钥放在字符串内,而不是放在文件内

    本文摘自 小楼一夜听春雨得博客: http://hi.baidu.com/magic475/blog/item/e8b82139020ae622b8998f96.html 使用Crypto++5.5. ...

  7. PKCS#1 v2.1 RSA Cryptography Standard (PKCS#1 RSA密码学规范,版本2.1)

    PKCS#1 v2.1: RSA密码学规范 RSA实验室 2002年6月14日 --翻译:CaesarZou (zoudeqiang1979@tsinghua.org.cn) 1.介绍 这个文档提供了 ...

  8. Windows自带的加密算法Crypto实现MD5, AES256以及RSA算法

    密码学我了解的很少,但是在逆向中这却是非常重要的基础.这个Crypto函数库是windows自带的,我实现了散列算法MD5[128位], 对称加密算法AES[256位]以及RSA算法.散列函数实现改几 ...

  9. 合宙Air105|CRYPTO|加密与解密|算法|RSA|HASH函数| BASE64|MD5|SHA1|SHA256|CRC|官方demo|学习(4):CRYPTO(加密与解密)

    基础资料 基于Air105开发板:Air105 - LuatOS 文档 上手:开发上手 - LuatOS 文档 探讨重点 对官方CRYPTO(加密与解密) 功能的复现,进行相关内容的学习及探讨. 实现 ...

最新文章

  1. java的基本数据类型有
  2. 分享一个在线考试系统,练手项目用他很香
  3. 转-Kafka【第一篇】Kafka集群搭建
  4. 主要矛盾和次要矛盾_次要GC,主要GC与完整GC
  5. 如何清理和维护计算机,电脑的优化与维护操作教程
  6. 分类数据显示功能_缓存优化
  7. 【JAVA面试】java面试题整理(4)
  8. 转 ---《协程小结》
  9. Linux 在线词典
  10. Python数据挖掘-文本挖掘
  11. EGO1—实现计数器74HC163
  12. linux 操作excel文件,Linux下输出excel文件
  13. 关于c语言学习的建议
  14. java中任何变量都可以被赋值为null,java中当给一个对象赋值为null时发生了什么...
  15. 分组密码以及分组密码的模式
  16. 常用英语口语175句
  17. linux系统给安卓root权限,安卓手机该如何获取Root权限?方法很简单,但不建议Root...
  18. 【考研初试】问题汇总及解答
  19. 深度学习 图像识别 三
  20. 【C#】(二维) 直线外一点在直线上的投影点

热门文章

  1. linux mkfs.ext3 参数,linux命令mkfs.ext3用法[阮胜昌]
  2. 绿色计算在数据中心的应用及节能效果浅析
  3. CSDN:解决粉丝网友集中问题留言处,把你所有的问题在留言处留言,我会一一回答
  4. AI:2020年6月23日北京智源大会演讲分享之智能信息检索与挖掘专题论坛——09:10-09:55裴健教授《智能搜索:从工具到思维方式和心智》
  5. DL之InceptionV2/V3:InceptionV2 InceptionV3算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  6. 任务间通信的基本知识
  7. dedecms织梦修改标题默认长度
  8. Android ContentProvider、ContentResolver和ContentObserver的使用
  9. 前端开发代码架构相关想法
  10. [BZOJ1015] [JSOI2008] 星球大战starwar (并查集)