做一个网站中的搜索功能怎么做,郑州网站,图片在线设计生成器,局域网RSA 加密算法全面介绍
前言
js加密、js解密#xff0c;js业务相关#xff0c;去jsjiami官网站长vx。
一、什么是 RSA#xff1f;它从哪来#xff1f;
RSA 是一种非对称加密算法#xff0c;由三位麻省理工学院的学者 Rivest、Shamir 和 Adleman 于 1977 年共同提出js业务相关去jsjiami官网站长vx。
一、什么是 RSA它从哪来
RSA 是一种非对称加密算法由三位麻省理工学院的学者 Rivest、Shamir 和 Adleman 于 1977 年共同提出因此用他们姓氏的首字母命名为 RSA。 它是世界上第一个公开的、既可用于加密数据又可用于数字签名的非对称算法广泛用于安全通信中如 HTTPS、SSL/TLS 等。
div aligncenterimg srchttps://upload.wikimedia.org/wikipedia/commons/8/88/RSA_Algorithm_diagram.png width600 altRSA 加密流程图 /p styletext-align:center图RSA 加密与解密流程图来源Wikipedia/p
/div二、RSA 的作用和特点
✅ 主要作用
信息加密通过公钥加密防止信息在传输过程中被窃听。身份认证通过私钥签名验证发送者身份防止伪造。密钥交换常用于安全协议中传输对称加密的密钥如 AES 密钥。 主要特点
使用一对密钥对公钥 (public key) 和私钥 (private key)。加密和解密不对称公钥加密的数据只能用私钥解密反之亦然。安全性基于大素数分解的数学难题。 三、RSA 的优点与缺点
优点缺点 安全性高理论上难以破解 加解密速度慢性能不如对称加密如 AES 可用于加密 数字签名 密钥长度长数据加密块有限制通常限制在密钥长度以内️ 便于密钥分发只需发送公钥 不适合大批量数据加密常与对称加密配合 四、适合使用 RSA 的场景 用户身份验证登录系统、签发 JWT 等。 SSL/TLS 通信浏览器访问 HTTPS 网站时的加密握手。 加密对称密钥将 AES 密钥用 RSA 加密发送。 数字签名与电子邮件加密如 PGP/GPG。 五、JavaScript 中的 RSA 加密实践
我们可以使用 node-forge 或 crypto 模块来生成密钥和进行加解密。
1️⃣ 安装依赖
npm install node-forge2️⃣ JavaScript 示例代码使用node-forge****
const forge require(node-forge);// 生成密钥对
const keypair forge.pki.rsa.generateKeyPair({ bits: 2048, e: 0x10001 });const publicKey forge.pki.publicKeyToPem(keypair.publicKey);
const privateKey forge.pki.privateKeyToPem(keypair.privateKey);console.log( 公钥:\n, publicKey);
console.log( 私钥:\n, privateKey);// 明文
const message Hello RSA!;// 加密
const encrypted keypair.publicKey.encrypt(forge.util.encodeUtf8(message), RSA-OAEP);
console.log( 加密内容Base64, forge.util.encode64(encrypted));// 解密
const decrypted keypair.privateKey.decrypt(encrypted, RSA-OAEP);
console.log( 解密后明文, forge.util.decodeUtf8(decrypted));输出示例 公钥:
-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY----- 加密内容Base64: A1B2C3... 解密后明文Hello RSA!