HTML5怎样用RSA加密小段文本_HTML5RSA文本加密实操法【示范】

HTML5环境可通过jsrsasign库实现RSA加密:导入PEM公钥、调用encrypt方法得十六进制密文,适用于短文本;私钥严禁前端存储,解密须在服务端完成。

HTML5 本身不内置 RSA 加密能力,但可以通过 JavaScript 调用成熟的加密库(如 jsrsasignWeb Crypto API(有限支持))在浏览器端完成小段文本的 RSA 加密。关键不是“HTML5 做什么”,而是“如何在 HTML5 环境中安全、可行地用 JS 实现 RSA 加密”。

选对库:推荐 jsrsasign(兼容性好、文档清晰)

Web Crypto API 原生支持 RSA-OAEP,但需手动处理密钥导入(PKCS#8 格式)、无直接 PEM 解析,对初学者门槛高。jsrsasign 封装完善,可直接读取 PEM 格式的公钥字符串,几行代码就能加密。

  • 从 jsrsasign 官网 下载最新版 jsrsasign-all-min.js,或通过 CDN 引入:

无需构建工具,纯前端 HTML 页面即可运行。

准备 RSA 公钥(服务端生成,前端只用公钥加密)

RSA 是非对称加密,前端仅负责用公钥加密,私钥必须严格保留在服务端解密。公钥一般以 PEM 格式提供,形如:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq...
-----END PUBLIC KEY-----

使用时去掉换行和首尾标识,或用 JS 自动清理:

const pubKeyPem = document.getElementById('pubkey').value
  .replace(/-+BEGIN PUBLIC KEY-+/g, '')
  .replace(/-+END PUBLIC KEY-+/g, '')
  .replace(/\s/g, '');

三步完成加密:初始化 → 导入 → 加密

以下为完整可运行示例(放在

const rsa = new KJUR.crypto.RSA();
rsa.setPublicKey(pubKeyPem); // 自动识别 PKCS#1 或 PKCS#8
const plainText = "hello world";
const encryptedHex = rsa.encrypt(plainText); // 返回十六进制字符串
console.log("密文(hex):", encryptedHex); // 如:a2f1e3c0...
  • 输出是十六进制字符串,适合转 Base64 后通过 AJAX 发送给后端
  • 若需 Base64 编码: btoa(String.fromCharCode(...encryptedHex.match(/.{2}/g).map(b => parseInt(b, 16))))
  • 注意:jsrsasign 默认使用 PKCS#1 v1.5 填充(RSAES-PKCS1-v1_5),服务端解密时需匹配

重要提醒:别在前端存私钥、别加密敏感长文本

RSA 不适合加密超过密钥长度 1/10 的数据(如 2048 位密钥最多加密约 245 字节)。小段文本(如 token、ID、短消息)可以;密码、JSON、文件内容等请改用 AES + RSA 混合方案(前端用 RSA 加密 AES 随机密钥,再用 AES

加密正文)。

前端环境无法保证绝对安全,私钥一旦暴露,整个加密体系失效。所有解密操作必须在可信服务端完成。