rsa 属于非对称加密算法,也叫公钥加密算法,它和对称加密算法最大区别就是拥有一对密钥,分为公钥和私钥,公钥可以公开分发,私钥必须自己保密,公钥加密的数据只能对应的私钥解密,私钥签名的数据可以用公钥验签,rsa 的数学基础是大整数因式分解难题,也就是把两个很大的质数相乘很容易,但是拿到乘积反过来分解出原来两个质数计算难度极高,这个数学难题保证了算法的安全性,rsa 广泛应用在数字签名,tlshttps 证书,身份认证,小数据加密场景,很多初学者会混淆,以为 rsa 是对称加密,或者以为它是哈希算法,其实 rsa 既不是对称加密,也不是摘要哈希算法,它属于公钥体系,这是核心定位,理解这个分类之后,才能分清 rsa 和 aes md5 这类算法的适用场景差别。
算法基础分类对照
| 算法大类 | 代表算法 | 核心特点 |
|---|---|---|
| 非对称加密 | rsa ecdsa | 公钥私钥成对,加密解密密钥不同 |
| 对称加密 | aes des | 加密解密使用同一个密钥 |
| 哈希摘要 | md5 sha256 | 单向运算,不能解密还原原文 |
rsa 核心原理
1 密钥生成,随机挑选两个大质数 p 和 q,计算 n 等于 p 乘以 q,再计算欧拉函数,生成公钥指数 e 和私钥指数 d,最终得到公钥 e n,私钥 d n
2 加密运算,明文用公钥 e 做模幂运算,得到密文
3 解密运算,密文用私钥 d 做模幂运算,还原原始明文
4 数字签名,用私钥对消息摘要做运算生成签名,接收方使用公钥校验签名是否有效,确认消息没有篡改并且发送方身份真实
rsa 两种典型用途
1 加密通信,公钥加密,私钥解密,适合加密短数据,比如用来传递对称加密的会话密钥,因为 rsa 运算速度慢,一般不会直接加密大量原始数据
2 数字签名,私钥签名,公钥验签,用于证书,电子签章,防篡改身份校验
rsa 优缺点
优点
1 密钥分发方便,公钥可以公开,不需要提前秘密传递密钥
2 同时支持加密和数字签名,一套密钥体系兼顾保密性和身份认证
缺点
1 运算速度比对称加密 aes 慢很多,大数据加密效率低
2 密钥长度要求高,现在安全使用一般至少 2048 位,更高安全等级使用 3072 位,密钥越长计算开销越大
3 安全性依赖大整数分解难题,未来量子计算机发展之后,rsa 会面临被破解的风险
学习掌握步骤
第一步 确定大类,记住 rsa 归类是非对称公钥加密算法
第二步 区分公钥私钥的使用方向,公钥加密私钥解密,私钥签名公钥验签
第三步 理解数学基础是大整数因式分解难题
第四步 记住它的短板,运算慢,一般配合对称算法混合使用,也就是 tls 里面经典的 rsa 交换会话密钥,之后大数据使用 aes 加密
第五步 区分 rsa 和对称加密哈希算法,避免分类混淆
综合总结,rsa 属于非对称加密也就是公钥加密算法,依靠公私钥对实现加密和数字签名,数学根基是大整数因式分解难题,因为运算速度限制,工程上大多用来协商密钥,大批量数据加密依旧搭配对称加密算法使用。
【常见问题】
问题 1 rsa 属于哪种算法 它和 aes 是同一类吗
回答 1 rsa 属于非对称加密算法,aes 属于对称加密算法,rsa 和 aes 不属于同一类算法,rsa 使用一对公私钥,aes 加密解密共用同一个密钥。
问题 2 rsa 属于哪种算法 可以做数字签名吗
回答 2 rsa 属于非对称加密算法,支持数字签名功能,rsa 使用私钥完成签名,接收端使用公钥验签,这是 rsa 非常重要的应用能力。
问题 3 rsa 属于哪种算法 是哈希算法吗
回答 3 rsa 属于非对称加密算法,不是哈希算法,哈希算法是单向摘要运算无法解密,rsa 属于可逆的公钥加密算法,可以解密还原明文。
【免责申明】
本文为密码学科普内容,密码算法安全等级会随算力发展变化,工程落地请参考最新密码规范,本文内容仅供学习参考。


