RSA 2048 3072 4096 PKCS#1笔记

RSA 2048 3072 4096 这些只要有其中一个源代码,都可以简单修改后更新为另一种算法。他们就字节数上的区别而已。比如有RSA2048源代码,可以通过简单修改就可以得到3072,4096等。

RSA2048源代码很好找,嘿嘿,比如瑞萨官网就有。RSA小工具在线RSA公钥加密解密、RSA public key encryption and decryption--查错网

PKCS#1就是在RSA签名或加密前对明文进行填充。根据填充的算法不同,分为最常见的三个版本:PKCS#1_v1.5、OAEP 、PSS

使用私钥加密公钥解密就是叫明文“签名”。
使用公钥加密私钥解密就是叫明文“加密
公钥举例:
 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt+l0S0X6piDTHDDpY4bp zV+5k97KRcnWCJT3fbnuqdB4RXaUgJ33BSTXMOLADwRuYFMjvVADvyypu7RcxRFa Hc4lfUIDT34cej4aaOiaABCNGCisJr1xrkrJuSMLm8EBZ0apAV5w8dm9f1ZLl2Fk /8HZbpOrQGbVy/QC9fxTEVGpgFwHFqvLmCX+AvOJfleRemTMLHpx6IMzWQqpWSPP SmvkJBr3jKkEXWW2dIcZQknjaQPdpMl1/qc8B8GRZ1RF/l/PRXL4vUeVuoGnVFBV KZIvgYJxm0Mc6ycWyofiuoOgHoXvdeRjiC0LU3a2s9ZoGeJsK2dPCp3e/pNCQ86H rQIDAQAB
通过网站小工具解析可以得到数模:

到时RSA算法里解密就会用到这两组数据:模数数组,指数数组
公钥:模数数组mod(modulus),指数数组e(exponent)
私钥举例:
 MIIEowIBAAKCAQEAt+l0S0X6piDTHDDpY4bpzV+5k97KRcnWCJT3fbnuqdB4RXaU gJ33BSTXMOLADwRuYFMjvVADvyypu7RcxRFaHc4lfUIDT34cej4aaOiaABCNGCis Jr1xrkrJuSMLm8EBZ0apAV5w8dm9f1ZLl2Fk/8HZbpOrQGbVy/QC9fxTEVGpgFwH FqvLmCX+AvOJfleRemTMLHpx6IMzWQqpWSPPSmvkJBr3jKkEXWW2dIcZQknjaQPd pMl1/qc8B8GRZ1RF/l/PRXL4vUeVuoGnVFBVKZIvgYJxm0Mc6ycWyofiuoOgHoXv deRjiC0LU3a2s9ZoGeJsK2dPCp3e/pNCQ86HrQIDAQABAoIBAGe/yD4qlRKg09dE dHUUB9M23C7h8QPbr+WZe+CuQkgD9cVh9rZz5oU9WjQWxrfyDP5ECJZkjCiN3pao UelON6M2xwlZcxqmDxSa8jUaer3smFv3nd4g4v+q6w+JCKRuBgen4fGGwHp/Fhq+ qNgWNm7dgXaS0Xn8SUHMPttb49SRYvomBBsfXivUfLJoXOxA8sbig31x4Pn6QSSN NhzoxAU4qyM30cjGreXemNUKfqq6VFpj1eFJvoQN3mZxeMjfXFOI6gDBja+BnwrE oG6w99qhInJGZWg7JLeJ0M7eOvPVB5TXF5zHkHd7bHohcuUXJYqEIAEbm+WWXBcL 3oU4z5UCgYEA39EYY28sGxQ7lT1W3VtvAW75TCvL692JsI7d8/AP93F10H6wvmtR OozPm4H6NE/8mNZlsS+CVajRtRqve9pvAkMUfmlSEZ6plUSxGX97fGcwEWeInbG1 bmppF2RX3F79M66E3CpzVI2+BMdvbn8x8QSza/efYhWwdRKoTwJKy9cCgYEA0lts naSbqW4pZz/RwlMaUFsKfMFkAf8gIIxoMrEa+45zVCk75/yUD2MGoodWpONIdSG3 EJf8Oh2z4qvmSwSN3vus0+Q9cSDaBKrimPTjbPT6w6cfczBPPP6KPiEG5wK05Z1O N2RnFfNkc88wLVQZdiLuRLXLj5Sg9RWRaFbMOBsCgYB+M88GsncyRbRbMJ08cAQl 0MdttfxkYST0k3p/xEucgTOnfuh2VtkUpLWjwCSvPrL2E16ADIP3fRvSfNuagM67 fcuehBCsssR40KTz9bhRq3WlOrYEBWKCgioD8KbCMiWf8LYl1yH0+X+9/h7NNZeZ iccKCDStAAHh4cVZ17cJPQKBgQCH+KSauZ4MxLJqlOwHSiRGMLL0tSTpzXl80IVB zwz78bZGfmjEqZUi5QWS5RxydJ+PZv2n8jYNcsmmCStQ7l6t9cxfIrc8etmyDqtt 501iTnARK+O+V0nAyV+ejUai6DL6ANZgI7wmii8yVIh1pFjY7fdJ3qD37ECmawyU fxZ+ZQKBgEZTGhkhLf42c4U6caKE+lw1dtsQ8DSGFKlwHNhz3yvQQ9lz0iYfsrqd glebTM1KvPIf+vVbKo1sIDnb+FUZERW0qaEA3Pr7AvZwyAWwvJmLEV9Yz5U3hzSgE2C4oEIB KoY2WfzXC1eKdn3AvEOKTbEUB00oWuwwKJNuaBQawBds4Xw5GebY
同样也可以通过小工具解析得到d(目前不知道是啥哈哈),和指数数组
到时RSA算法里加密就会用到这两组数据:d数组,指数数组
私钥:d数组,指数数组e(exponent)
一般主机厂使用私钥签名(加密),供应商使用公钥验签(解密)

PKCS#1版本整理:                                                             
PKCS#1_v1.5:最简单的填充算法,网上都有介绍。主要用于“加密”和“签名”
PKCS#1_v2.0:OAEP填充算法。主要用于“加密”
PKCS#1_v2.1:PSS填充算法。主要用于“签名”
PKCS#1_v2.2:包括了以上所有版本的填充算法,使用时任选一种。

PKCS#1_v2.0:OAEP
加密过程:明文->OAEP算法填充编码(最终得到EM)->RSA加密
解密过程:RSA解密->OAEP算法填充解码->明文

编码过程:
1.构造DB
2.构造随机字节串种子seed
3.通过DB和seed通过MGF1(MGF和异或)得到maskedSeed和maskedDB
4.构造EM
5.对EM进行RSA加密

解码过程:
1.分解EM,使用哈希函数输出的长度hLen进行分割,得到maskedSeed和maskedDB。
2.使用maskedSeed和maskedDB反推得到seed。(反推也是使用MGF1)
3.使用 seed 和 maskedDB反推得到填充数据块DB。
4.剥离DB头部的lHash,然后根据填充的全0x00字节串以及填充结束的标记0x01找到消息M的起始位置进而解码出原始消息。

PKCS#1_v2.1:PSS(现在各大主机厂最喜欢使用的签名方案
签名过程:明文->PSS算法填充编码(最终得到EM)->RSA加密

1. 构造M
其中mHash为明文的哈希值(一般使用SHA256),长度为32字节,Salt的长度等于mHash的长度
2.构造DB
3.对M进行哈希计算得到H,H和DB进行MGF1(MGF和异或)计算得到MaskedDB
4.构造EM
5.对EM进行RSA加密就得到签名值

验签过程:RSA解密->PSS算法填充解码->对签名值进行验证

1.使用RSA解密得到EM
2.EM提取MaskedDB和H进行MGF1(MGF和异或)计算得到DB
3.构造M
提取DB中的Salt,以及使用mHash(明文的哈希值),Pad(8字节0)构造出M
4.使用M进行哈希计算得到H
5.比较H和EM中的H是否相等,相等说明验签OK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值