无需登录 数据私有 本地保存

RSA密钥对生成器 - Web Crypto API在线非对称密钥

78
0
0
0
RSA加密算法

RSA是一种非对称加密算法,由Ron Rivest、Adi Shami和Leonard Adleman于1977年共同发明。RSA算法的安全性基于大整数因子分解的数学难题——将两个大素数相乘很容易,但将乘积分解为原始素数却极其困难。RSA算法使用一对密钥:公钥用于加密或验证签名,私钥用于解密或创建签名。这种非对称设计解决了密钥分发的根本问题,是现代互联网安全通信的基石。

非对称加密

非对称加密(Asymmetric Encryption)使用一对数学上相关联但功能不同的密钥:公钥(Public Key)和私钥(Private Key)。公钥可以公开分享给任何人,用于加密数据或验证数字签名;私钥必须由所有者严格保密,用于解密数据或创建数字签名。非对称加密解决了对称加密中密钥分发的难题,广泛应用于HTTPS、SSH、PGP、JWT等安全协议中。

公钥与私钥

公钥是RSA密钥对中可以公开分享的部分,用于加密数据或验证数字签名。任何拥有公钥的人都可以使用它加密数据,但只有拥有对应私钥的人才能解密。私钥是RSA密钥对中必须严格保密的部分,用于解密公钥加密的数据或创建数字签名。私钥泄露会导致严重安全风险,攻击者可以解密所有使用对应公钥加密的数据,或伪造合法的数字签名。

密钥长度

密钥长度是指RSA密钥的位数,通常以比特(bit)为单位。密钥长度直接决定RSA算法的安全强度:密钥越长,暴力破解所需的计算资源越多,安全性越高。1024位密钥已不再安全,2048位是当前推荐的标准长度,4096位提供最高级别的安全强度。密钥长度每增加一倍,加密解密的计算复杂度大约增加7-8倍,因此需要在安全性和性能之间做出权衡。

数字签名

数字签名是使用私钥对消息摘要进行加密的过程,用于验证消息的完整性和发送者的身份。数字签名的工作流程:首先使用哈希算法对消息计算摘要,然后使用私钥对摘要进行加密(签名)。验证者使用公钥解密签名得到摘要,重新计算消息摘要并对比,如果一致则证明消息未被篡改且确实来自私钥持有者。数字签名广泛应用于SSL证书、代码签名、JWT认证等场景。

哈希算法

哈希算法是一种将任意长度的数据映射为固定长度摘要的单向函数。密码学哈希算法具有三个关键特性:确定性(相同输入总是产生相同输出)、抗碰撞(难以找到两个不同输入产生相同输出)、单向性(无法从输出反推输入)。在RSA签名中,哈希算法用于将消息压缩为固定长度的摘要,然后使用私钥对摘要进行签名。常用的密码学哈希算法包括SHA-256、SHA-384和SHA-512。

Web Crypto API

Web Crypto API是W3C标准定义的浏览器加密接口,提供JavaScript访问底层加密功能的能力。Web Crypto API支持对称加密、非对称加密、数字签名、密钥生成和密钥管理等操作。它直接调用操作系统的加密库,提供硬件级别的随机数生成和安全的密钥存储。Web Crypto API在所有现代浏览器中都有良好的支持,是构建安全Web应用的重要基础设施。本工具正是基于Web Crypto API实现所有加密运算。

PEM格式

PEM(Privacy Enhanced Mail)是一种基于Base64编码的密钥格式,以"-----BEGIN...-----"和"-----END...-----"标记包裹。PEM格式是目前应用最广泛的密钥格式,被OpenSSL、SSH、SSL证书等几乎所有安全工具和协议支持。公钥通常以"BEGIN PUBLIC KEY"或"BEGIN RSA PUBLIC KEY"标记,私钥通常以"BEGIN PRIVATE KEY"或"BEGIN RSA PRIVATE KEY"标记。PEM格式的优点是可读性好、兼容性强,缺点是体积较大。

JWK格式

JWK(JSON Web Key)是一种基于JSON的密钥表示格式,由RFC 7517定义。JWK格式将密钥的各个组成部分以JSON字段的形式表示,例如模数(n)、公钥指数(e)、私钥指数(d)等。JWK格式非常适合Web应用和API认证场景,是JWT标准推荐的密钥格式。JWK格式的优点是结构清晰、易于解析、适合Web传输,缺点是不如PEM格式通用。本工具支持将密钥导出为JWK格式,方便用于JWT签名和验证。

PKCS1-v1_5

PKCS1-v1_5是RSA签名的经典填充方案,由RSA Laboratories在PKCS#1标准中定义。该算法采用确定性签名方案,相同的私钥和消息总是产生相同的签名值。PKCS1-v1_5广泛应用于SSL证书签名、代码签名和传统数字签名场景。虽然它仍然被广泛使用,但由于其确定性签名特性,在某些场景下可能存在安全隐患。对于新的系统和应用,建议使用RSA-PSS算法替代。

RSA-PSS

RSA-PSS(Probabilistic Signature Scheme)是一种概率性签名算法,由Mihir Bellare和Phillip Rogaway于1996年提出。与PKCS1-v1_5不同,PSS在每次签名时会引入随机盐值,使得相同的私钥和消息每次签名都会产生不同的结果,从而提供更强的安全性。RSA-PSS已被NIST、IETF等标准组织推荐用于新的系统和协议中,是目前最安全的RSA签名算法之一。特别适用于JWT签名、API认证和高安全性要求的数字签名场景。

RSA-OAEP

RSA-OAEP(Optimal Asymmetric Encryption Padding)是专为加密解密场景设计的RSA算法变体。OAEP采用最优非对称加密填充方案,在加密前对明文进行随机化处理,提供了语义安全性,能够有效抵抗选择密文攻击。RSA-OAEP是目前推荐的RSA加密算法,广泛应用于安全密钥交换、混合加密系统和敏感数据加密场景。与传统的PKCS1-v1_5加密相比,OAEP提供了更强的安全保障,是现代加密系统的首选方案。