RSA密钥长度究竟多长?_rsa pkcs 15 长度

  1. 公钥加密:使用公钥对明文进行加密,加密过程如下:
  • 将明文转换为整数m(一般使用编码方式如ASCII码或Unicode码)。
  • 计算密文c = m^e mod n,其中e为公钥指数,n为模数。
  • 密文c即为加密后的数据。
  1. 私钥解密:使用私钥对密文进行解密,解密过程如下:
  • 计算明文m = c^d mod n,其中d为私钥指数,n为模数。
  • 明文m即为解密后的原始数据。
  1. 数字签名:RSA算法还可以用于数字签名,以验证数据的完整性和身份鉴定。数字签名的过程如下:
  • 假设发送者要发送数据m,并使用自己的私钥进行签名。
  • 发送者对数据m进行哈希处理,生成哈希值h。
  • 使用私钥对哈希值h进行加密,生成签名s。
  • 发送者将数据m和签名s一起发送给接收者。
  • 接收者使用发送者的公钥对签名s进行解密,得到解密后的哈希值h’。
  • 接收者对接收到的数据m进行哈希处理,生成哈希值h’'。
  • 比较哈希值h’和h’',如果相等,则签名验证通过。

RSA密钥知识在保证数据安全和隐私的传输中起着重要的作用。公钥加密可以使数据在非安全通道上进行安全传输,私钥解密只能由拥有相应私钥的一方进行,从而确保数据的机密性。数字签名可以验证发送者的身份并保证数据的完整性,防止数据在传输过程中被篡改。但同时需要注意保护好私钥的安全,避免私钥泄露导致数据被破解或伪造签名。

总之,RSA密钥知识涉及到密钥生成、公钥加密、私钥解密和数字签名等内容,是保障数据传输安全和身份验证的重要技术基础。

生成公私钥

生成私钥

我们使用openssl工具直接生成公私钥(默认生成的是2048位):

openssl genrsa -out private8.pem

file

也可以生成1024位:

openssl genrsa -out private8.pem 1024

file

生成公钥
openssl rsa -in private8.pem -pubout -out public8.pem

file

通过openssl提取模和指数

openssl rsa -in private8.pem -noout -text

file

通过java api取对应的模数跟指数

import java.security.interfaces.RSAPublicKey;  
import com.sun.org.apache.xml.internal.security.utils.Base64;  
  
public class RSA\_modulus {  
  
    private static String PUBKEY\_TEXT = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwaSv68WTprFlvMUmRq8sF+ior4ZwNwX7H+d67dDiUTY/02jKLJDEbDy7B+ocH7fQNDwTGEsQreYkf23YAra7eVW4/TJZoR9MVezui9p4up0b6k0KbLzpVqsG1dQj+DfNRNq0TmQClvPbzVtyOISWMnWcUr5dLGEe5+FTGJqI72yXMelpPxIv01R9rP1PdDB+BlnMXx7e2/lmUFhs9nzvwLgehtqsbLN8bi4kjIL1R7fyQVXXEaWBRgBofE5CN48TYYK6NQlhRNjY3S7Dx6SE9PRWIj4XXs663PMXCVT9Wg9W1PyN544gk9TkbW5yFpLSbsQOTlcLzNW878jYG0q9zQIDAQAB";  
  
    public static void getModulesAndExponent() throws Exception {  
  
        try {  
            // 解密由base64编码的公钥,并构造X509EncodedKeySpec对象 
            java.security.spec.X509EncodedKeySpec bobPubKeySpec = new java.security.spec.X509EncodedKeySpec(  
                    Base64.decode(PUBKEY\_TEXT));  
            // RSA算法 
            java.security.KeyFactory keyFactory = java.security.KeyFactory.getInstance("RSA");  
            // 取公钥匙对象 
            RSAPublicKey pubKey = (RSAPublicKey) keyFactory.generatePublic(bobPubKeySpec);  
  
            System.out.println("modules: 0x" + pubKey.getModulus().toString(16));  
            System.out.println("publicExponent: 0x" + pubKey.getPublicExponent().toString(16));  
        }catch(Exception e) {  
            throw e;  
        }  
    }  
  
    public static void main(String[] args) {  
        try {  
            RSA\_modulus.getModulesAndExponent();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}

## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**

![img](https://img-blog.csdnimg.cn/img_convert/f9f27296bae3482e6e7e46f69849842a.png)

![img](https://img-blog.csdnimg.cn/img_convert/d0e2670efe32fe802e094aed7805d02c.png)

![img](https://img-blog.csdnimg.cn/img_convert/8e9b3b7104302ce2081351de9ea88eb4.png)

![img](https://img-blog.csdnimg.cn/img_convert/649491384c119c12c3951bf11034f683.png)

![img](https://img-blog.csdnimg.cn/img_convert/7232e5cfac5e2dc99f9b8416af6d9854.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值